First outline of a process management service server.
[barrelfish] / if / proc_mgmt.if
1 /*
2  * Copyright (c) 2017, ETH Zurich.
3  * All rights reserved.
4  *
5  * This file is distributed under the terms in the attached LICENSE file.
6  * If you do not find this file, copies can be found by writing to:
7  * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
8  */
9
10 interface proc_mgmt "Process management service" {
11   
12   // Allocate a new endpoint for a future connecting client.
13   rpc alloc_ep(out errval err, out cap ep);
14
15   // Spawn a new domain, returning its domainid cap.
16   rpc spawn(in coreid core,
17             in String path[2048],
18             in char argvbuf[argvbytes, 2048],
19             in char envbuf[envbytes, 2048],
20             in uint8 flags,
21             out errval err,
22             out cap domainid_cap);
23
24   // Span the caller to a new core.
25   rpc span(in cap domainid_cap,
26            in coreid core,
27            in cap vroot,
28            in cap disp_mem,
29            out errval err);
30
31   // Kill a domain for which the caller has a domainid cap.
32   rpc kill(in cap domainid_cap, out errval err);
33
34   // TODO(razvan): exit, wait, status, some other calls from spawn.if?
35 };