minix/lib
David van Moolenbroek 4c27a83389 Add libsockevent: a socket event dispatching library
This library provides an event-based abstraction model and dispatching
facility for socket drivers.  Its main goal is to eliminate any and
all need for socket drivers to keep track of pending socket calls.
Additionally, this library takes over responsibility of a number of
other tasks that would otherwise be duplicated between socket drivers,
but in such a way that individual socket drivers retain a large degree
of freedom in terms of API behavior.  The library's main features are:

- suspension, resumption, and cancellation of socket calls;
- an abstraction layer for select(2);
- state tracking of shutdown(2);
- pending (asynchronous) errors and the SO_ERROR socket option;
- listening-socket tracking and the SO_ACCEPTCONN socket option;
- generation of SIGPIPE signals; SO_NOSIGPIPE, MSG_NOSIGNAL;
- send and receive low-watermark tracking, SO_SNDLOWAT, SO_RCVLOWAT;
- send and receive timeout support and SO_SNDTIMEO, SO_RCVTIMEO;
- an abstraction layer for the SO_LINGER socket option;
- tracking of various on/off socket options as well as SO_TYPE;
- a range of pre-checks on socket calls that are required POSIX.

In order to track per-socket state, the library manages an opaque
"sock" object for each socket.  The allocation of such objects is left
entirely to the socket driver.  Each sock object has an associated
callback table for calls from libsockevent to the socket driver.  The
socket driver can raise events on the sock object in order to flag
that any previously suspended operations of a particular type should
be resumed.  The library may defer processing such raised events if
immediate processing could interfere with internal consistency.

The sockevent library is layered on top of libsockdriver, and should
be used by all socket driver implementations if at all possible.

Change-Id: I3eb2c80602a63ef13035f646473360293607ab76
2017-03-09 23:39:53 +00:00
..
csu Reduce sysident patches 2016-01-16 14:04:27 +01:00
i18n_module Import locale tools and ressource files 2016-07-09 12:18:33 +02:00
libbz2 NetBSD re-synchronization of the source tree 2016-01-13 20:32:14 +01:00
libc libc: remove MINIX3 restrictions from getnameinfo(3) 2016-10-24 12:11:07 +00:00
libc_vfp NetBSD re-synchronization of the source tree 2016-01-13 20:32:14 +01:00
libcrypt NetBSD re-synchronization of the source tree 2016-01-13 20:32:14 +01:00
libcurses NetBSD re-synchronization of the source tree 2016-01-13 20:32:14 +01:00
libedit NetBSD re-synchronization of the source tree 2016-01-13 20:32:14 +01:00
libexecinfo NetBSD re-synchronization of the source tree 2016-01-13 20:32:14 +01:00
libform NetBSD re-synchronization of the source tree 2016-01-13 20:32:14 +01:00
libintl Import locale tools and ressource files 2016-07-09 12:18:33 +02:00
libkvm Import NetBSD libkvm 2016-01-13 20:32:49 +01:00
libm NetBSD re-synchronization of the source tree 2016-01-13 20:32:14 +01:00
libmenu Synchronize on NetBSD-CVS (2013/12/1 12:00:00 UTC) 2014-07-28 17:05:06 +02:00
libpci NetBSD re-synchronization of the source tree 2016-01-13 20:32:14 +01:00
libprop Synchronize on NetBSD-CVS (2013/12/1 12:00:00 UTC) 2014-07-28 17:05:06 +02:00
libpuffs NetBSD re-synchronization of the source tree 2016-01-13 20:32:14 +01:00
librefuse NetBSD re-synchronization of the source tree 2016-01-13 20:32:14 +01:00
librmt NetBSD re-synchronization of the source tree 2016-01-13 20:32:14 +01:00
libterminfo NetBSD re-synchronization of the source tree 2016-01-13 20:32:14 +01:00
libutil Revert "libutil: add getmaxpartitions() implementation" 2016-03-13 19:51:58 +00:00
libz NetBSD re-synchronization of the source tree 2016-01-13 20:32:14 +01:00
lua NetBSD re-synchronization of the source tree 2016-01-13 20:32:14 +01:00
bumpversion Synchronize on NetBSD-CVS (2013/12/1 12:00:00 UTC) 2014-07-28 17:05:06 +02:00
checkoldver Synchronize on NetBSD-CVS (2013/12/1 12:00:00 UTC) 2014-07-28 17:05:06 +02:00
checkver Synchronize on NetBSD-CVS (2013/12/1 12:00:00 UTC) 2014-07-28 17:05:06 +02:00
checkvers Synchronize on NetBSD-CVS (2013/12/1 12:00:00 UTC) 2014-07-28 17:05:06 +02:00
Makefile Add libsockevent: a socket event dispatching library 2017-03-09 23:39:53 +00:00
Makefile.inc Synchronize on NetBSD-CVS (2013/12/1 12:00:00 UTC) 2014-07-28 17:05:06 +02:00