]> Zhao Yanbai Git Server - minix.git/commit
RS: add infrastructure for mapping socket drivers 17/3417/1
authorDavid van Moolenbroek <david@minix3.org>
Sun, 21 Feb 2016 18:43:17 +0000 (18:43 +0000)
committerDavid van Moolenbroek <david@minix3.org>
Thu, 9 Mar 2017 23:39:49 +0000 (23:39 +0000)
commit181fb1b2b562251d07c6fcffd262fd8efbcd2ee0
tree9d25bb0531d5f2d22e98077e7ea7efee754aa004
parenta1c660069f6222eb2c465ded9970be27fcd38ebb
RS: add infrastructure for mapping socket drivers

This patch introduces the first piece of support for the concept of
"socket drivers": services that implement one or more socket protocol
families.  The latter are also known as "domains", as per the first
parameter of the socket(2) API.  More specifically, this patch adds
the basic infrastructure for specifying that a particular service is
the socket driver for a set of domains.

Unlike major number mappings for block and character drivers, socket
domain mappings are static.  For that reason, they are specified in
system.conf files, using the "domain" keyword.  Such a keyword is to
be followed by one or more protocol families, without their "PF_"
prefix.  For example, a service with the line "domain INET INET6;"
will be mapped as the socket driver responsible for the AF_INET and
AF_INET6 protocol families.

This patch implements only the infrastructure for creating such
mappings; the actual mapping will be implemented in VFS in a later
patch.  The infrastructure is implemented in service(8), RS, and VFS.

For now there is a hardcoded limit of eight domains per socket driver.
This may sound like a lot, but the upcoming new LWIP service will
already use four of those.  Also, it is allowed for a service to be
both a block/character driver and a socket driver at the same time,
which is a requirement for the new LWIP service.

Change-Id: I93352d488fc6c481e7079248082895d388c39f2d
minix/commands/minix-service/parse.c
minix/commands/minix-service/parse.h
minix/include/minix/config.h
minix/include/minix/ipc.h
minix/include/minix/rs.h
minix/include/minix/syslib.h
minix/lib/libsys/mapdriver.c
minix/servers/rs/manager.c
minix/servers/rs/proto.h
minix/servers/rs/request.c
minix/servers/vfs/dmap.c