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