Commit Graph

15 Commits

Author SHA1 Message Date
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
David van Moolenbroek
85723df033 Add libsockdriver: a library for socket drivers
This library provides abstractions for socket drivers, and should be
used as the basis for all socket driver implementations.  It provides
the following functionality:

  - a function call table abstraction, hiding the details of the
    socket driver protocol with simple parameters and presenting the
    socket driver with callback functions very similar to the BSD
    socket API calls made from userland;
  - abstracting data structures and helper functions for suspending
    and resuming blocking calls;
  - abstracting data structures and helper functions for copying data
    from and to the caller.

Overall, the library is similar to lib{block,char,fs,input,net}driver
in concept.  Some of the abstractions provided here should in fact be
applied to libchardriver as well.  As always, for the case that the
provided message loop is too restrictive, a set of more low-level
message processing functions is provided.

Change-Id: I79ec215f5e195c3b0197e223636f987d3755fb13
2017-03-09 23:39:52 +00:00
David van Moolenbroek
14d921278d Import NetBSD getent(1)
Disable RPC support for now.

Change-Id: I5ccb435220bf20cd9089cdd7aacb7d126f62f119
2017-03-09 20:04:33 +01:00
David van Moolenbroek
81fc6023c2 Import NetBSD services_mkdb(8)
Change-Id: Ia3fc2479d2abb2dbe9afd1b60e0ffbaf377bcf5a
2017-02-22 17:18:06 +00:00
David van Moolenbroek
5ae330e220 Import NetBSD fmt(1)
This requires importing a few files from mail(1) already.  Importing
the rest of mail(1) is left to future work.

Change-Id: If96513a306245cd7fb64660758d0dbd29a36e87c
2017-02-22 17:18:00 +00:00
David van Moolenbroek
045e0ed35c Import NetBSD rcorder(8)
Change-Id: Id2ed4959f8089189929fc56401d1c70add5ad323
2017-02-22 17:17:28 +00:00
David van Moolenbroek
c58da9fbc3 Rename MINIX service(8) to minix-service(8)
IMPORTANT: this change has a docs/UPDATING entry!

This rename is unfortunately necessary because NetBSD has decided to
create its own service(8) utility, and we will want to import theirs
as well.  The two can obviously not coexist.

Also move ours from /bin to /sbin, as it is a superuser-only utility.

Change-Id: Ic6e46ffb3a84b4747d2fdcb0d74e62dbea065039
2017-02-22 17:16:21 +00:00
David van Moolenbroek
bf5536d653 distrib: more minor fixes
- unbreak MKDEBUGLIB=yes builds
- please do not delete my .exrc file :(

Change-Id: Ib1d40e6894062bd881e50c712da88e7a604f2ad7
2017-02-22 13:57:54 +00:00
Jia-Ju Bai
eecf6d233d Add the driver for Trident 4DWAVE-DX sound card
Change-Id: I6a4f5427915032a6a4c0246fed35c10397df3e07
2017-01-08 19:01:58 +01:00
Jia-Ju Bai
8acfcfc39e Add the driver for CS4281 sound card
Change-Id: Ifc1b7c129578c5efa5e328664d10d07ee5df786b
2017-01-08 19:01:20 +01:00
Jia-Ju Bai
86fd71a2c9 Add the driver for ALS4000 sound card
Change-Id: I2ad08e8479b743ec235d1c9e541faa2fa6a29fcc
2017-01-08 19:00:40 +01:00
Jia-Ju Bai
37e23b1cc7 Add the driver for CMI8738 sound card
Change-Id: I5a53e3b8652a014e105ca7c77c42a730f6824307
2017-01-08 18:59:39 +01:00
Jia-Ju Bai
8d98f2e579 Add the driver for IC Plus 1000A Ethernet card
Change-Id: I9ac119c6285bc63a8b795b44d9ab7d245d9a8832
2016-11-24 17:22:28 +01:00
Jia-Ju Bai
022136b354 Add the driver for VIA Technology 6105/6106S Ethernet card
Change-Id: I690c34f0a37bcbb20a5b7748e3dd315707460caf
2016-10-19 21:54:58 +02:00
Jean-Baptiste Boric
6afe26749a Enable building with MKDEBUG and MKDEBUGLIB
The way these options work is by creating files that contain debugging
symbols and stashing them in a dedicated set. The minix-debug set has
been created for this purpose, but it will probably have to be refined
since it has been tested only with the default options with an i386
cross-build.

LSC: Amended to support many combination of MKDEBUG, MKDEBUGLIB, with
     and without X11, for both intel and arm.

Change-Id: I2901952e8229938f9ac79c8656484acf704ccd9b
2016-09-10 12:42:45 +02:00