genode/base-linux/src/platform
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
..
x86_32 Work-around of running Genode with PaX enabled 2012-02-08 19:30:55 +01:00
x86_64 Work-around of running Genode with PaX enabled 2012-02-08 19:30:55 +01:00
_main_helper.h Move context area definition to native_type 2012-09-24 09:17:54 +02:00
context_area.nostdlib.ld Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
context_area.stdlib.ld Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
linux_rpath.cc Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
linux_rpath.h Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
linux_socket.h Support for socket-descriptor marshalling 2012-11-05 17:31:04 +01:00
linux_syscalls.h Support for socket-descriptor marshalling 2012-11-05 17:31:04 +01:00
lx_hybrid.cc Linux: prevent zombie state for child processes 2012-07-11 12:12:41 +02:00