1 /* 2 * Compile with: 3 * cc -I/usr/local/include -o time-test time-test.c -L/usr/local/lib -levent 4 */ 5 #ifdef HAVE_CONFIG_H 6 #include "config.h" 7 #endif 8 9 #ifdef WIN32 10 #include <winsock2.h> 11 #endif 12 13 #include <sys/types.h> 14 #include <sys/stat.h> 15 #ifdef HAVE_SYS_TIME_H 16 #include <sys/time.h> 17 #endif 18 #include <fcntl.h> 19 #include <stdlib.h> 20 #include <stdio.h> 21 #include <string.h> 22 #ifdef HAVE_UNISTD_H 23 #include <unistd.h> 24 #endif 25 #include <errno.h> 26 27 #include <event.h> 28 29 int called = 0; 30 31 #define NEVENT 20000 32 33 struct event *ev[NEVENT]; 34 35 static int 36 rand_int(int n) 37 { 38 #ifdef WIN32 39 return (int)(rand() * n); 40 #else 41 return (int)(random() % n); 42 #endif 43 } 44 45 static void 46 time_cb(int fd, short event, void *arg) 47 { 48 struct timeval tv; 49 int i, j; 50 51 called++; 52 53 if (called < 10*NEVENT) { 54 for (i = 0; i < 10; i++) { 55 j = rand_int(NEVENT); 56 tv.tv_sec = 0; 57 tv.tv_usec = rand_int(50000); 58 if (tv.tv_usec % 2) 59 evtimer_add(ev[j], &tv); 60 else 61 evtimer_del(ev[j]); 62 } 63 } 64 } 65 66 int 67 main (int argc, char **argv) 68 { 69 struct timeval tv; 70 int i; 71 72 /* Initalize the event library */ 73 event_init(); 74 75 for (i = 0; i < NEVENT; i++) { 76 ev[i] = malloc(sizeof(struct event)); 77 78 /* Initalize one event */ 79 evtimer_set(ev[i], time_cb, ev[i]); 80 tv.tv_sec = 0; 81 tv.tv_usec = rand_int(50000); 82 evtimer_add(ev[i], &tv); 83 } 84 85 event_dispatch(); 86 87 return (called < NEVENT); 88 } 89 90