Add per-spawnd message queues to the process manager.
[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   // Add a new spawnd to the process manager's list.
13   message add_spawnd(coreid core, iref iref);
14
15   // Spawn a new domain, returning its domain 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 domain_cap);
23
24   rpc spawn_with_caps(in coreid core,
25                       in String path[2048],
26                       in char argvbuf[argvbytes, 2048],
27                       in char envbuf[envbytes, 2048],
28                       in cap inheritcn_cap,
29                       in cap argcn_cap,
30                       in uint8 flags,
31                       out errval err,
32                       out cap domain_cap);
33
34   // Span a new core for a given domain, based on provided vroot and dispframe.
35   rpc span(in cap domain_cap, in coreid core, in cap vroot, in cap dispframe,
36            out errval err);
37
38   // Kill a domain for which the caller has a domain cap.
39   rpc kill(in cap domain_cap, out errval err);
40
41   // Let the process manager know the caller has finished execution.
42   //message exit(cap domain_cap, uint8 status);
43   rpc exit(in cap domain_cap, in uint8 status);
44
45   rpc wait(in cap domain_wap, out errval err, out uint8 status);
46
47   // TODO(razvan): exit, wait, status, some other calls from spawn.if?
48 };