* A fix for the aarch64/ppc64 linker issue that has been plaguing us
for a while (https://github.com/buytenh/ivykis/issues/6). I don't
have access to a ppc box, but I reproduced the problem in an aarch64
(qemu-system-aarch64) virtual machine and fixed it there.
* libivykis.so now no longer pulls in libpthread.so, and linking
against libpthread.so is now fully optional. If libpthread isn't
linked in, ivykis can perform various optimizations, such as
skipping pthread mutex calls, and iv_event can skip creating an
eventfd when running in single-threaded mode.
* iv_signal now lets you register a thread-specific signal interest,
indicated by the IV_SIGNAL_FLAG_THIS_THREAD flag, for which the
handler will be called when that signal is delivered to the thread
the interest was registered in (and will not trigger if the signal
is delivered to another thread in the process).
- Don't forget to ship src/pthr.h in 'make dist' generated tarballs.
- test/Makefile.am: Include dependencies for all test programs.
- Guard against multiple inclusion of mutex.h and pthr.h.
- Rename mutex_*() functions to __mutex_*().
- test/avl: Reduce test AVL tree size.
- Turn iv_validate_now() into a no-op.
- iv_fd: Let ->poll() return whether a timeout could have occurred.
- iv_fd: Allow timeout handling optimizations in poll methods.
- epoll: Implement ->set_poll_timeout() using timerfd_create(2).
- kqueue: Implement ->set_poll_timeout() using EVFILT_TIMER.
- port: Implement ->set_poll_timeout() using timer_create(3C).
- spinlock.h: Fix pthread_sigmask() pointer aliasing issue.
- Use a maxium event polling timeout of a day.
- iv_task: Allow task registered by another task to run immediately.
- Split off implementations of iv_thread_get_id() into separate files.
- Further mangle names of the __mutex_*() functions.
- Add EINTR check loops to a few more write(2) call instances.
- test/: Avoid long long printf format specifiers.
ivykis is a thin wrapper over various OS'es implementation of I/O
readiness notification facilities (such as poll(2), kqueue(2))
and is mainly intended for writing portable high-performance
network servers.