Lightweight event loop library for Linux epoll() family APIs
Please note, this release is a major ABI bump due to changes in uev_t
which requires recompiling all programs that use libuEv.
Also, libuEv is built for 64 bit time_t
, this means all applications that link with libuEv also must be built with the same build flags. This applies in particular to systems with GLIBC v2.34, which now require applications to add the following to their CPPFLAGS
:
CPPFLAGS += -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64
Applications that use pkg-config
will get these extra flags from the libuev.pc
file in the distribution archive.
struct signalfd_siginfo
to uev_t
, valid for signal watchers. Now more metadata is available to signal callbacks-D_FILE_OFFSET_BITS=64
for applications and libraries that want a 64-bit time_t
. Affects library and test programs used for make check
, as well as all other applications that link with libuEv, so the libuev.pc
file is also updatedPackages for Debian 10, or later, and compatible Ubuntu releases, available at https://deb.troglobit.com/
NOTE: You now have to explicitly include sys/queue.h
, or provide a local version of queue.h
, if your application depends on it.
queue.h
doubly-linked lst API with own implementation. Making libuEv stand-alone, no longer imposing any particular version of queue.h
on the user-std=gnu11
to unlock typeof()
in older GCC versionsMakefile.am
, library did not rebuild properly if any of the local header files were changed/dev/input/js0
uev_exit()
, use _SAFE
macros to traverse list of watchers instead of while()
uev_exit()
terminates properlyuev_signal_stop()
idempotentuev_timer_stop()
call close()
on the timerfd directly, do not call uev_timer_set()
since that may cause lockups or hangsAM_PROG_AR
macro exists before calling it, fixes problem building libuEv on systems with older autoconf + automake. Patch by Markus Svilansepoll_create1()
at a certain error threshold. This tracking was first introduced in [v1.1.0][], triggered by spurious EPOLLERR
on I/O watchersEPOLLERR
or EPOLLHUP
, it is up to the watcher callback to clear the error and/or read()
the last few bytes from the descriptor. HUP usally means EOF, or that the remote end of a stream or pipe closed, this may also be signaled by read()
returning zero--enable-examples
to configure
scriptuev_exit()
, which stops all watchers. When the timer callback returns another call to stop the watcher triggered the double close()
UEV_ERROR
UEV_ERROR
UEV_HUP
in unit tests and examples