14 #include <sys/resource.h>
20 #include "pcap/funcattrs.h"
21 #include "portability.h"
23 int main(int argc _U_
, char **argv _U_
)
27 char errbuf
[PCAP_ERRBUF_SIZE
+1];
29 FILETIME start_ktime
, start_utime
, end_ktime
, end_utime
;
30 FILETIME dummy1
, dummy2
;
31 ULARGE_INTEGER start_kticks
, end_kticks
, start_uticks
, end_uticks
;
32 ULONGLONG ktime
, utime
, tottime
;
34 struct rusage start_rusage
, end_rusage
;
35 struct timeval ktime
, utime
, tottime
;
39 if (!GetProcessTimes(GetCurrentProcess(), &dummy1
, &dummy2
,
40 &start_ktime
, &start_utime
))
42 fprintf(stderr
, "GetProcessTimes() fails at start\n");
45 start_kticks
.LowPart
= start_ktime
.dwLowDateTime
;
46 start_kticks
.HighPart
= start_ktime
.dwHighDateTime
;
47 start_uticks
.LowPart
= start_utime
.dwLowDateTime
;
48 start_uticks
.HighPart
= start_utime
.dwHighDateTime
;
50 if (getrusage(RUSAGE_SELF
, &start_rusage
) == -1) {
51 fprintf(stderr
, "getrusage() fails at start\n");
55 for (int i
= 0; i
< 500; i
++)
57 if (pcap_findalldevs(&alldevs
, errbuf
) == -1)
59 fprintf(stderr
,"Error in pcap_findalldevs: %s\n",errbuf
);
62 pcap_freealldevs(alldevs
);
66 if (!GetProcessTimes(GetCurrentProcess(), &dummy1
, &dummy2
,
67 &end_ktime
, &end_utime
))
69 fprintf(stderr
, "GetProcessTimes() fails at end\n");
72 end_kticks
.LowPart
= end_ktime
.dwLowDateTime
;
73 end_kticks
.HighPart
= end_ktime
.dwHighDateTime
;
74 end_uticks
.LowPart
= end_utime
.dwLowDateTime
;
75 end_uticks
.HighPart
= end_utime
.dwHighDateTime
;
76 ktime
= end_kticks
.QuadPart
- start_kticks
.QuadPart
;
77 utime
= end_uticks
.QuadPart
- start_uticks
.QuadPart
;
78 tottime
= ktime
+ utime
;
79 printf("Total CPU secs: kernel %g, user %g, total %g\n",
80 ((double)ktime
) / 10000000.0,
81 ((double)utime
) / 10000000.0,
82 ((double)tottime
) / 10000000.0);
84 if (getrusage(RUSAGE_SELF
, &end_rusage
) == -1) {
85 fprintf(stderr
, "getrusage() fails at end\n");
88 timersub(&end_rusage
.ru_stime
, &start_rusage
.ru_stime
, &ktime
);
89 timersub(&end_rusage
.ru_utime
, &start_rusage
.ru_utime
, &utime
);
90 timeradd(&ktime
, &utime
, &tottime
);
91 printf("Total CPU secs: kernel %g, user %g, total %g\n",
92 (double)ktime
.tv_sec
+ ((double)ktime
.tv_usec
/ 1000000.0),
93 (double)utime
.tv_sec
+ ((double)utime
.tv_usec
/ 1000000.0),
94 (double)tottime
.tv_sec
+ ((double)tottime
.tv_usec
/ 1000000.0));