14 #include <sys/resource.h>
20 #include "pcap/funcattrs.h"
23 #include "portability.h"
26 int main(int argc _U_
, char **argv _U_
)
30 char errbuf
[PCAP_ERRBUF_SIZE
+1];
32 FILETIME start_ktime
, start_utime
, end_ktime
, end_utime
;
33 FILETIME dummy1
, dummy2
;
34 ULARGE_INTEGER start_kticks
, end_kticks
, start_uticks
, end_uticks
;
35 ULONGLONG ktime
, utime
, tottime
;
37 struct rusage start_rusage
, end_rusage
;
38 struct timeval ktime
, utime
, tottime
;
42 if (!GetProcessTimes(GetCurrentProcess(), &dummy1
, &dummy2
,
43 &start_ktime
, &start_utime
))
45 fprintf(stderr
, "GetProcessTimes() fails at start\n");
48 start_kticks
.LowPart
= start_ktime
.dwLowDateTime
;
49 start_kticks
.HighPart
= start_ktime
.dwHighDateTime
;
50 start_uticks
.LowPart
= start_utime
.dwLowDateTime
;
51 start_uticks
.HighPart
= start_utime
.dwHighDateTime
;
53 if (getrusage(RUSAGE_SELF
, &start_rusage
) == -1) {
54 fprintf(stderr
, "getrusage() fails at start\n");
58 for (int i
= 0; i
< 500; i
++)
60 if (pcap_findalldevs(&alldevs
, errbuf
) == -1)
62 fprintf(stderr
,"Error in pcap_findalldevs: %s\n",errbuf
);
65 pcap_freealldevs(alldevs
);
69 if (!GetProcessTimes(GetCurrentProcess(), &dummy1
, &dummy2
,
70 &end_ktime
, &end_utime
))
72 fprintf(stderr
, "GetProcessTimes() fails at end\n");
75 end_kticks
.LowPart
= end_ktime
.dwLowDateTime
;
76 end_kticks
.HighPart
= end_ktime
.dwHighDateTime
;
77 end_uticks
.LowPart
= end_utime
.dwLowDateTime
;
78 end_uticks
.HighPart
= end_utime
.dwHighDateTime
;
79 ktime
= end_kticks
.QuadPart
- start_kticks
.QuadPart
;
80 utime
= end_uticks
.QuadPart
- start_uticks
.QuadPart
;
81 tottime
= ktime
+ utime
;
82 printf("Total CPU secs: kernel %g, user %g, total %g\n",
83 ((double)ktime
) / 10000000.0,
84 ((double)utime
) / 10000000.0,
85 ((double)tottime
) / 10000000.0);
87 if (getrusage(RUSAGE_SELF
, &end_rusage
) == -1) {
88 fprintf(stderr
, "getrusage() fails at end\n");
91 timersub(&end_rusage
.ru_stime
, &start_rusage
.ru_stime
, &ktime
);
92 timersub(&end_rusage
.ru_utime
, &start_rusage
.ru_utime
, &utime
);
93 timeradd(&ktime
, &utime
, &tottime
);
94 printf("Total CPU secs: kernel %g, user %g, total %g\n",
95 (double)ktime
.tv_sec
+ ((double)ktime
.tv_usec
/ 1000000.0),
96 (double)utime
.tv_sec
+ ((double)utime
.tv_usec
/ 1000000.0),
97 (double)tottime
.tv_sec
+ ((double)tottime
.tv_usec
/ 1000000.0));