int main(void) { /* 28 Oct 2018 */ dt d2 = {28, 10, 2018}; /* 30 June 2006 */ dt d1 = {30, 6, 2006}; int days; int d1_pt = 0, d2_pt = 0; if (d1.year > d2.year) d1_pt += 100; else d2_pt += 100; if (d1.month > d2.month) d1_pt += 10; else d2_pt += 10; if (d1.day > d2.day) d1_pt += 1; else d2_pt += 1; days = (d1_pt > d2_pt) ? minus(d1, d2) : minus(d2, d1); print_dt(d1); print_dt(d2); printf("number of days: %d \n", days); return 0; }
int minus(dt d1, dt d2) { int d1_l = leap(d1.year), d2_l = leap(d2.year); int y, m; int total_days = 0; int total_days_2 = 0; print_dt(d1); print_dt(d2); for (y = d1.year; y >= d2.year ; y--) { if (y == d1.year) { for (m = d1.month ; m >= 1 ; m--) { if (m == d1.month) total_days += d1.day; else total_days += daysPerMonth[leap(y)][m]; // printf("%d - %5s - %d - %d \n", y, month[m], daysPerMonth[leap(y)][m], total_days); } } else { for (m = 12 ; m >= 1 ; m--) { total_days += daysPerMonth[leap(y)][m]; // printf("%d - %5s - %d - %d \n", y, month[m], daysPerMonth[leap(y)][m], total_days); } } if (y == d2.year) { for (m = d2.month ; m >= 1 ; m--) { if (m == d2.month) total_days_2 += d2.day; else total_days_2 += daysPerMonth[leap(y)][m]; // printf("%d - %5s - %d - %d \n", y, month[m], daysPerMonth[leap(y)][m], total_days); } } } printf("\n Totaldays:%d Totaldays_2:%d\n",total_days,total_days_2); return total_days - total_days_2; }
void kvm_show_regs(kvm_context_t kvm, int vcpu) { int fd = kvm->vcpu_fd[vcpu]; struct kvm_regs regs; struct kvm_sregs sregs; int r; r = ioctl(fd, KVM_GET_REGS, ®s); if (r == -1) { perror("KVM_GET_REGS"); return; } fprintf(stderr, "rax %016llx rbx %016llx rcx %016llx rdx %016llx\n" "rsi %016llx rdi %016llx rsp %016llx rbp %016llx\n" "r8 %016llx r9 %016llx r10 %016llx r11 %016llx\n" "r12 %016llx r13 %016llx r14 %016llx r15 %016llx\n" "rip %016llx rflags %08llx\n", regs.rax, regs.rbx, regs.rcx, regs.rdx, regs.rsi, regs.rdi, regs.rsp, regs.rbp, regs.r8, regs.r9, regs.r10, regs.r11, regs.r12, regs.r13, regs.r14, regs.r15, regs.rip, regs.rflags); r = ioctl(fd, KVM_GET_SREGS, &sregs); if (r == -1) { perror("KVM_GET_SREGS"); return; } print_seg(stderr, "cs", &sregs.cs); print_seg(stderr, "ds", &sregs.ds); print_seg(stderr, "es", &sregs.es); print_seg(stderr, "ss", &sregs.ss); print_seg(stderr, "fs", &sregs.fs); print_seg(stderr, "gs", &sregs.gs); print_seg(stderr, "tr", &sregs.tr); print_seg(stderr, "ldt", &sregs.ldt); print_dt(stderr, "gdt", &sregs.gdt); print_dt(stderr, "idt", &sregs.idt); fprintf(stderr, "cr0 %llx cr2 %llx cr3 %llx cr4 %llx cr8 %llx" " efer %llx\n", sregs.cr0, sregs.cr2, sregs.cr3, sregs.cr4, sregs.cr8, sregs.efer); }