Split libuev.c into one file per watcher type, mostly to give a better
overview and ease of maintenance, but also to help the linker.
Unfortunately this steals a few bytes when linking a full blown app, but
for apps that, e.g., only need I/O watchers and no timers the resulting
binary will be smaller. This applies to static binaries that are more
common in embedded systems.
$ size libuev.a libuev.so.1
text data bss dec hex filename
999 0 0 999 3e7 main.o (ex libuev.a)
90 0 0 90 5a io.o (ex libuev.a)
490 0 0 490 1ea timer.o (ex libuev.a)
4380 696 8 5084 13dc libuev.so.1
Also, move uev.h back to top from include/libuev/uev.h since a separate
namespace is not needed after the removal of the OpenBSD queue.h copy.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
libuev - Micro event loop library
The libuev library is a small event library in the style of libevent, the excellent libev and the venerable Xt(3) event loop.
It is heavily modelled after the libev API, but will never be as portable or friendly to older systems. The focus of this project is modern embedded Linux systems, you will need kernel and C-library support for epoll(7) and timerfd.
Usage
Basically an event context is created to which timer and I/O stream watchers are registered. After initial setup, the typical application enters the event loop that will only return at program termination.
The C API
The typical application will do the following steps
- Create the event context with
uev_ctx_create() - Register callbacks with
uev_io_create()anduev_timer_create() - Enter the event loop with
uev_run()
Note: Make sure to use non-blocking stream I/O!
Build & Install
The library is built and developed for GNU/Linux systems, as such it may use GNU GCC and GNU Make specific features, but may also work with other UNIX systems as well.
make all: The librarymake test: Test and showcasemake install: Honors $prefix and $DESTDIR environment variables
Warning
Please be advised, libuev is not thread safe! It is primarily intended for use-cases where the engineed wants to avoid the use of threads.