The libevent API provides a mechanism to execute a callback function when a specific event occurs on a file descriptor or after a timeout has been reached. libevent is meant to replace the asynchronous event loop found in event driven network servers. An application just needs to call event_dispatch() and can then add or remove events dynamically without having to change the event loop. Currently, libevent supports kqueue(2) and select(2). Support for poll(2) and /dev/poll is planned. The internal event mechanism is completely independent of the exposed event API, and a simple update of libevent can provide this new functionality without having to redesign the server applications.