This is OBSOLETE. Please use the IO API from libowfat
During the fnord development I decided to measure the relative performance of using poll(2) or platform specific performance hacks to write a web server. The problem with the platform specific hacks is that there are so many of them. So I decided to create a nice framework that would be relatively easy to use but still extensible to support new event notification APIs without having to rewrite the application.
The main difference between the APIs is that some are level triggered (if the API says "you can read now" and you don't read, the API will tell you again) and some are edge triggered. poll(2) is level triggered, the Linux 2.4 real-time signal based sigio is edge triggered, and the Linux 2.6 epoll API is edge triggered as well.
Fortunately, an application written for an edge triggered API also works with level triggered API. In fact, it is more efficient than normal code written for level triggered APIs.
There is no mailing list about enot yet. Please discuss it on the fnord mailing list. If there is enough interest, enot will get its own mailing list.
Please read the announcement I posted to the fnord mailing list about enot if you are looking for some timings.
$ cvs -d :pserver:firstname.lastname@example.org:/cvs login (Logging in to email@example.com) CVS password: [just hit return] $ cvs -d :pserver:firstname.lastname@example.org:/cvs -z9 co enot [...]
Please read artillery.c for usage info.
The header files define a bigger API than is actually there. I have not implemented the timeout stuff because I am not yet sure how to do it properly.