# HG changeset patch # User Paul Boddie # Date 1716754659 -7200 # Node ID 046eef71b69d568dafd96a3f96cd1dc6e386d0d8 # Parent 5e9bbc1f893bedbcdedbf95dee5eb3f12f3ad4fd Provide a pipe server capability to created processes. diff -r 5e9bbc1f893b -r 046eef71b69d conf/dstest_fsaccess_stdin.cfg --- a/conf/dstest_fsaccess_stdin.cfg Sun May 26 22:16:53 2024 +0200 +++ b/conf/dstest_fsaccess_stdin.cfg Sun May 26 22:17:39 2024 +0200 @@ -49,6 +49,7 @@ l:startv({ caps = { fsserver = ext2server_paulb, + pipeserver = pipe_server, prserver = process_server:svr(), jdb = L4.Env.jdb, -- to set the server name }, diff -r 5e9bbc1f893b -r 046eef71b69d libexec/lib/src/process_creating.cc --- a/libexec/lib/src/process_creating.cc Sun May 26 22:16:53 2024 +0200 +++ b/libexec/lib/src/process_creating.cc Sun May 26 22:17:39 2024 +0200 @@ -332,6 +332,11 @@ l4_cap_idx_t prserver_cap = _process.allocate_cap(); l4_cap_idx_t prserver = l4re_env_get_cap(ENV_PROCESS_SERVER_NAME); + /* Obtain the pipe server capability. */ + + l4_cap_idx_t pipeserver_cap = _process.allocate_cap(); + l4_cap_idx_t pipeserver = l4re_env_get_cap(ENV_PIPE_SERVER_NAME); + /* Also reserve capabilities for the reader and writer. If the reader or writer are invalid capabilities, these will not actually be transferred. */ @@ -343,6 +348,7 @@ struct ipc_mapped_cap program_mapped_caps[] = { {fsserver_cap, fsserver, L4_CAP_FPAGE_RWS, L4_FPAGE_C_OBJ_RIGHTS}, {prserver_cap, prserver, L4_CAP_FPAGE_RWS, L4_FPAGE_C_OBJ_RIGHTS}, + {pipeserver_cap, pipeserver, L4_CAP_FPAGE_RWS, L4_FPAGE_C_OBJ_RIGHTS}, {reader_cap, reader, L4_CAP_FPAGE_RWS, L4_FPAGE_C_OBJ_RIGHTS}, {writer_cap, writer, L4_CAP_FPAGE_RWS, L4_FPAGE_C_OBJ_RIGHTS}, {L4_INVALID_CAP, L4_INVALID_CAP, 0, 0}, @@ -368,6 +374,7 @@ l4re_env_cap_entry_t program_init_caps[] = { l4re_env_cap_entry_t(ENV_FILESYSTEM_SERVER_NAME, fsserver_cap, L4_CAP_FPAGE_RWS), l4re_env_cap_entry_t(ENV_PROCESS_SERVER_NAME, prserver_cap, L4_CAP_FPAGE_RWS), + l4re_env_cap_entry_t(ENV_PIPE_SERVER_NAME, pipeserver_cap, L4_CAP_FPAGE_RWS), l4re_env_cap_entry_t(ENV_INPUT_STREAM_NAME, reader_cap, L4_CAP_FPAGE_R), l4re_env_cap_entry_t(ENV_OUTPUT_STREAM_NAME, writer_cap, L4_CAP_FPAGE_W), l4re_env_cap_entry_t()