|
28 | 28 | #defineOPS_FORMAT"%9.3f ops/sec"
|
29 | 29 |
|
30 | 30 | /* These are macros to avoid timing the function call overhead. */
|
| 31 | +#ifndefWIN32 |
31 | 32 | #defineSTART_TIMER\
|
32 | 33 | do { \
|
33 | 34 | alarm_triggered = false; \
|
34 | 35 | alarm(secs_per_test); \
|
35 | 36 | gettimeofday(&start_t, NULL); \
|
36 | 37 | } while (0)
|
| 38 | +#else |
| 39 | +#defineSTART_TIMER\ |
| 40 | +do { \ |
| 41 | +alarm_triggered = false; \ |
| 42 | +if (CreateThread(NULL, 0, process_alarm, NULL, 0, NULL) == \ |
| 43 | +INVALID_HANDLE_VALUE) \ |
| 44 | +{ \ |
| 45 | +fprintf(stderr, "Cannot create thread for alarm\n"); \ |
| 46 | +exit(1); \ |
| 47 | +} \ |
| 48 | +gettimeofday(&start_t, NULL); \ |
| 49 | +} while (0) |
| 50 | +#endif |
37 | 51 |
|
38 | 52 | #defineSTOP_TIMER\
|
39 | 53 | do { \
|
@@ -82,7 +96,9 @@ main(int argc, char *argv[])
|
82 | 96 | /* Prevent leaving behind the test file */
|
83 | 97 | signal(SIGINT,signal_cleanup);
|
84 | 98 | signal(SIGTERM,signal_cleanup);
|
| 99 | +#ifndefWIN32 |
85 | 100 | signal(SIGALRM,process_alarm);
|
| 101 | +#endif |
86 | 102 | #ifdefSIGHUP
|
87 | 103 | /* Not defined on win32 */
|
88 | 104 | signal(SIGHUP,signal_cleanup);
|
@@ -553,7 +569,13 @@ print_elapse(struct timeval start_t, struct timeval stop_t, int ops)
|
553 | 569 | staticvoid
|
554 | 570 | process_alarm(intsig)
|
555 | 571 | {
|
| 572 | +#ifdefWIN32 |
| 573 | +sleep(secs_per_test); |
| 574 | +#endif |
556 | 575 | alarm_triggered= true;
|
| 576 | +#ifdefWIN32 |
| 577 | +ExitThread(0); |
| 578 | +#endif |
557 | 579 | }
|
558 | 580 |
|
559 | 581 | staticvoid
|
|