genode/base-linux/include/base
Norman Feske ca4f574f4c Support for socket-descriptor marshalling
This patch adds prinicipal support for transmitting socket descriptors
as RPC payload. Socket descriptors are handled by the linux-specific
implementation of the capability marshalling and unmarshalling functions
in 'ipc.h'. The 'Message' type in 'src/platform/linux_socket.h' has been
extended to carry multiple descriptors in a single message.

Unfortuately, we hit a problem (and potential show stopper) here:

  lx_sendmsg failed with -109 in lx_call()

The error code corresponds to ETOOMANYREFS. There is only one place in
the Linux kernel where this error code is used (net/unix/af_unix.c).
The code for 'unix_attach_fds()' suggests that there is a limit with
regard to the maximum number of references for a given Unix domain
socket. When the error occurs, core and init are running. The socket
of core's server entrypoint is present in the '/proc/pid/fd' of those
processes 8 times. The error occurs when core tries to perform an
RPC to the entrypoint to perform 'Ram_session::transfer_quota()'
(base/include/base/child.h at line 248).
2012-11-05 17:31:04 +01:00
..
ipc.h Support for socket-descriptor marshalling 2012-11-05 17:31:04 +01:00
ipc_msgbuf.h Support for socket-descriptor marshalling 2012-11-05 17:31:04 +01:00
local_interface.h Add 'socket' member to 'Native_capability::Dst' 2012-11-05 17:31:03 +01:00
native_types.h linux: Remove socket member from 'Native_thread' 2012-11-05 17:31:03 +01:00
pager.h Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
platform_env.h Add 'socket' member to 'Native_capability::Dst' 2012-11-05 17:31:03 +01:00