genode/base-linux
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
..
etc Imported Genode release 11.11 2011-12-22 16:19:25 +01:00
include Support for socket-descriptor marshalling 2012-11-05 17:31:04 +01:00
lib Hardening compilation support for 64bit Linux 2012-06-21 00:50:18 +02:00
mk Hardening compilation support for 64bit Linux 2012-06-21 00:50:18 +02:00
run Merge final fixes from internal repositories 2011-12-23 14:04:29 +01:00
src Support for socket-descriptor marshalling 2012-11-05 17:31:04 +01:00
README Imported Genode release 11.11 2011-12-22 16:19:25 +01:00

This repository contains the Linux-specific implementation of Genode.