Files
minix/distrib/sets
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
..
2015-10-12 11:25:54 +02:00

# $NetBSD: README,v 1.13 2013/08/06 22:33:59 soren Exp $

the scripts should be run from the directory where they reside.

makeflist:	output the list of files that should be in a
		distribution, according to the contents of the
		'lists' directory.

checkflist:	check the file list (as internally generated
		by makeflist) against the tree living in $DESTDIR.
		(that tree should be made with 'make distribution'.)

maketars:	make tarballs of the various sets in the distribution,
		based on the contents of the lists, the tree in
		$DESTDIR, and put the tarballs in $RELEASEDIR.
		Note that this script _doesn't_ create the 'secr'
		distribution, because (for now) it requires
		manual intervention to get the binaries right...
		(i'll add another script to create that dist, later.)

what's in 'lists':

lists describing file sets.  There are two sets of lists per file
set: machine dependent and machine-independent files. (there's
also another file in the 'man' dir, which is used by the 'man'
and 'misc' sets, but that's explained later.)

There is one machine-independent file, named "mi".  There are
N machine-dependent files (one per architecture), named "md.${ARCH}".

the sets are as follows:

	base:	the base binary set.  excludes everything described
		below.

	comp:	compiler tools.  All of the tools relating to C, C++,
		and FORTRAN (yes, there are two!) that are in the
		tree.  This includes includes, the linker, tool chain,
		and the .a versions of the libraries.  (obviously,
		base includes ldd, ld.so, and the shared versions.
		base also includes 'cpp', because that's used by X11.)
		includes the man pages for all the binaries contained
		within.  Also, includes all library and system call
		manual pages.

	debug:	Debugging libraries (_g.a/MKDEBUGLIB) and (.debug/MKDEBUG)
		binaries.

	etc:	/etc, and associated files (/var/cron/tabs, /root,
		etc.).  things that shouldn't be blindly reinstalled
		on an upgrade.

	games:	the games and their man pages.

	man:	all of the man pages for the system, except those
		listed elsewhere (e.g. in comp, games, misc, text).
		Includes machine-dependent man pages for this CPU.

	misc:	share/dict, share/doc, and the machine-dependent
		man pages for other CPUs which happen to always
		be installed.

	modules:	stand/${MACHINE}/${OSRELEASE}/modules kernel modules

	tests:	unit, regression, integration and stress tests for the
		whole system.

	text:	text processing tools.  groff and all of its friends.
		includes man pages for all bins contained within.

Each set must contain "./etc/mtree/set.<set name>" within the mi
list.  Failure to add this will break unprivileged builds.