• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
rand_int(int n)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
time_cb(int fd,short event,void * arg)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
main(int argc,char ** argv)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