Add spawn, spawn_with_caps and span calls to the Process Manager API.
authorRazvan Damachi <razvan.damachi@gmail.com>
Tue, 20 Jun 2017 15:14:58 +0000 (17:14 +0200)
committerSimon Gerber <simon.gerber@inf.ethz.ch>
Thu, 31 Aug 2017 14:35:07 +0000 (16:35 +0200)
commit93751d0a5e46a8f299343d4cec3af642a117bd37
tree5b588c7d6b73a21159f9ef243533d356d2608f66
parent83ef51719466b23c8831892ebe930b8b69defdfa
Add spawn, spawn_with_caps and span calls to the Process Manager API.

The process manager keeps local domain state and forwards valid requests to
spawnds, acting as a proxy for spawning & spanning. Requests are validated as
per the Span-Stop-Cleanup state machine at https://goo.gl/6JuJj2.

Spawnd has been enriched with several asynchronous API calls, in order for
the process manager to serve requests non-blockingly. Specifically, clients of
the process management service issue RPCs to the process manager server
(blockingly), but the latter forwards requests to spawnd asynchronously, hence
it is able to serve multiple clients at the same time.

The client code for spanning uses libbarrelfish/domain.h to create the new
dispatcher for the remote core.

Bug: if the first dispatcher exits main(), dispatchers spanned on other cores
will pagefault.

Signed-off-by: Razvan Damachi <razvan.damachi@gmail.com>
22 files changed:
errors/errno.fugu
if/proc_mgmt.if
if/spawn.if
include/barrelfish/caddr.h
include/barrelfish/domain.h
include/barrelfish/proc_mgmt_client.h
include/barrelfish_kpi/init.h
lib/barrelfish/capabilities.c
lib/barrelfish/domain.c
lib/barrelfish/proc_mgmt_client.c
usr/proc_mgmt/Hakefile
usr/proc_mgmt/domain.c [new file with mode: 0644]
usr/proc_mgmt/domain.h [new file with mode: 0644]
usr/proc_mgmt/pending_clients.c [new file with mode: 0644]
usr/proc_mgmt/pending_clients.h [new file with mode: 0644]
usr/proc_mgmt/service.c
usr/proc_mgmt/spawn_client.c [new file with mode: 0644]
usr/proc_mgmt/spawn_client.h [new file with mode: 0644]
usr/proc_mgmt/spawnd_state.c
usr/proc_mgmt/spawnd_state.h
usr/spawnd/ps.h
usr/spawnd/service.c