Only in libevent-1.1a.agl: Makefile Common subdirectories: libevent-1.1a/WIN32-Code and libevent-1.1a.agl/WIN32-Code Common subdirectories: libevent-1.1a/WIN32-Prj and libevent-1.1a.agl/WIN32-Prj Common subdirectories: libevent-1.1a/compat and libevent-1.1a.agl/compat Only in libevent-1.1a.agl: config.h Only in libevent-1.1a.agl: config.log Only in libevent-1.1a.agl: config.status diff -u libevent-1.1a/devpoll.c libevent-1.1a.agl/devpoll.c --- libevent-1.1a/devpoll.c 2005-03-29 08:16:09.000000000 +0100 +++ libevent-1.1a.agl/devpoll.c 2005-08-09 16:14:39.534954796 +0100 @@ -76,6 +76,7 @@ int devpoll_del (void *, struct event *); int devpoll_recalc (struct event_base *, void *, int); int devpoll_dispatch (struct event_base *, void *, struct timeval *); +int devpoll_abilities(struct event_base *); struct eventop devpollops = { "devpoll", @@ -83,7 +84,8 @@ devpoll_add, devpoll_del, devpoll_recalc, - devpoll_dispatch + devpoll_dispatch, + devpoll_abilities }; #define NEVENT 32000 @@ -401,3 +403,9 @@ return (0); } + +int +devpoll_abilities(struct event_base *) +{ + return 0; +} diff -u libevent-1.1a/epoll.c libevent-1.1a.agl/epoll.c --- libevent-1.1a/epoll.c 2005-05-10 09:13:12.000000000 +0100 +++ libevent-1.1a.agl/epoll.c 2005-08-09 16:31:21.301348640 +0100 @@ -76,6 +76,7 @@ int epoll_del (void *, struct event *); int epoll_recalc (struct event_base *, void *, int); int epoll_dispatch (struct event_base *, void *, struct timeval *); +int epoll_abilities (struct event_base *); struct eventop epollops = { "epoll", @@ -83,7 +84,8 @@ epoll_add, epoll_del, epoll_recalc, - epoll_dispatch + epoll_dispatch, + epoll_abilities }; #ifdef HAVE_SETFD @@ -244,6 +246,11 @@ return (0); } +int +epoll_abilities(struct event_base *base) +{ + return EV_ABILITY_EDGE; +} int epoll_add(void *arg, struct event *ev) @@ -278,6 +285,8 @@ events |= EPOLLIN; if (ev->ev_events & EV_WRITE) events |= EPOLLOUT; + if (ev->ev_events & EV_EDGE) + events |= EPOLLET; epev.data.ptr = evep; epev.events = events; diff -u libevent-1.1a/event.c libevent-1.1a.agl/event.c --- libevent-1.1a/event.c 2005-04-23 16:39:11.000000000 +0100 +++ libevent-1.1a.agl/event.c 2005-08-09 16:27:28.712067219 +0100 @@ -176,6 +176,13 @@ return (current_base); } +/* Return true iff the event interface supports edge triggered IO */ +int +event_abilities() +{ + return current_base->evsel->abilities(current_base->evbase); +} + int event_priority_init(int npriorities) { diff -u libevent-1.1a/event.h libevent-1.1a.agl/event.h --- libevent-1.1a/event.h 2005-04-23 03:51:39.000000000 +0100 +++ libevent-1.1a.agl/event.h 2005-08-09 16:31:32.967387338 +0100 @@ -53,6 +53,7 @@ #define EV_WRITE 0x04 #define EV_SIGNAL 0x08 #define EV_PERSIST 0x10 /* Persistant event */ +#define EV_EDGE 0x20 /* edge triggered */ /* Fix so that ppl dont have to run with */ #ifndef TAILQ_ENTRY @@ -112,6 +113,8 @@ #undef _EVENT_DEFINED_RBENTRY #endif /* _EVENT_DEFINED_RBENTRY */ +#define EV_ABILITY_EDGE 1 // can do edge triggered IO + struct eventop { char *name; void *(*init)(void); @@ -119,6 +122,9 @@ int (*del)(void *, struct event *); int (*recalc)(struct event_base *, void *, int); int (*dispatch)(struct event_base *, void *, struct timeval *); + /* abilities returns a bitmask of flags describing what this event + interface can do. See ABILITY_* for values --agl */ + int (*abilities)(struct event_base *); }; #define TIMEOUT_DEFAULT {5, 0} @@ -126,6 +132,7 @@ void *event_init(void); int event_dispatch(void); int event_base_dispatch(struct event_base *); +int event_abilities(); #define _EVENT_LOG_DEBUG 0 #define _EVENT_LOG_MSG 1 diff -u libevent-1.1a/kqueue.c libevent-1.1a.agl/kqueue.c --- libevent-1.1a/kqueue.c 2005-06-11 22:06:25.000000000 +0100 +++ libevent-1.1a.agl/kqueue.c 2005-08-09 16:11:20.658850484 +0100 @@ -75,6 +75,7 @@ int kq_recalc (struct event_base *, void *, int); int kq_dispatch (struct event_base *, void *, struct timeval *); int kq_insert (struct kqop *, struct kevent *); +int kq_abilities(struct event_base *); const struct eventop kqops = { "kqueue", @@ -82,7 +83,8 @@ kq_add, kq_del, kq_recalc, - kq_dispatch + kq_dispatch, + kq_abilities }; void * @@ -396,3 +398,9 @@ return (0); } + +int +kq_abilities(struct event_base *base) +{ + return 0; +} Only in libevent-1.1a: libevent-1.1a-edge.agl.patch Only in libevent-1.1a.agl: libtool diff -u libevent-1.1a/poll.c libevent-1.1a.agl/poll.c --- libevent-1.1a/poll.c 2005-05-11 05:12:01.000000000 +0100 +++ libevent-1.1a.agl/poll.c 2005-08-09 16:10:54.999192024 +0100 @@ -74,6 +74,7 @@ int poll_del (void *, struct event *); int poll_recalc (struct event_base *, void *, int); int poll_dispatch (struct event_base *, void *, struct timeval *); +int poll_abilities (struct event_base *); struct eventop pollops = { "poll", @@ -81,7 +82,8 @@ poll_add, poll_del, poll_recalc, - poll_dispatch + poll_dispatch, + poll_abilities }; void * @@ -355,3 +357,8 @@ poll_check_ok(pop); return (0); } + +int +poll_abilities(struct event_base *base) { + return 0; +} diff -u libevent-1.1a/rtsig.c libevent-1.1a.agl/rtsig.c --- libevent-1.1a/rtsig.c 2005-03-29 07:55:42.000000000 +0100 +++ libevent-1.1a.agl/rtsig.c 2005-08-09 16:12:12.235100895 +0100 @@ -124,6 +124,7 @@ int rtsig_del(void *, struct event *); int rtsig_recalc(struct event_base *, void *, int); int rtsig_dispatch(struct event_base *, void *, struct timeval *); +int rtsig_abilities(struct event_base *); struct eventop rtsigops = { "rtsig", @@ -131,7 +132,8 @@ rtsig_add, rtsig_del, rtsig_recalc, - rtsig_dispatch + rtsig_dispatch, + rtsig_abilities }; void * @@ -433,3 +435,9 @@ return (0); } + +int +rtsig_abilities(struct event_base *base) +{ + return 0; +} Common subdirectories: libevent-1.1a/sample and libevent-1.1a.agl/sample diff -u libevent-1.1a/select.c libevent-1.1a.agl/select.c --- libevent-1.1a/select.c 2005-05-11 05:05:16.000000000 +0100 +++ libevent-1.1a.agl/select.c 2005-08-09 16:11:47.895233771 +0100 @@ -76,6 +76,7 @@ int select_del (void *, struct event *); int select_recalc (struct event_base *, void *, int); int select_dispatch (struct event_base *, void *, struct timeval *); +int select_abilities(struct event_base *); const struct eventop selectops = { "select", @@ -83,7 +84,8 @@ select_add, select_del, select_recalc, - select_dispatch + select_dispatch, + select_abilities }; static int select_resize(struct selectop *sop, int fdsz); @@ -350,3 +352,9 @@ check_selectop(sop); return (0); } + +int +select_abilities(struct event_base *base) +{ + return 0; +} Only in libevent-1.1a.agl: stamp-h1 Common subdirectories: libevent-1.1a/test and libevent-1.1a.agl/test