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 <sys/queue.h> */
 #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
