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, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group.
8 */
9
10interface proc_mgmt "Process management service" {
11  
12    typedef struct {
13        uint8 status;
14    } ps_entry;
15
16  // Add a new spawnd to the process manager's list.
17  message add_spawnd(coreid core, iref iref);
18
19  // Spawn a new domain, returning its domain cap.
20  rpc spawn(in coreid core,
21            in String path[2048],
22            in char argvbuf[argvbytes, 2048],
23            in char envbuf[envbytes, 2048],
24            in uint8 flags,
25            out errval err,
26            out cap domain_cap);
27
28  rpc spawn_with_caps(in coreid core,
29                      in String path[2048],
30                      in char argvbuf[argvbytes, 2048],
31                      in char envbuf[envbytes, 2048],
32                      in cap inheritcn_cap,
33                      in cap argcn_cap,
34                      in uint8 flags,
35                      out errval err,
36                      out cap domain_cap);
37
38  // Span a new core for a given domain, based on provided vroot and dispframe.
39  rpc span(in cap domain_cap, in coreid core, in cap vroot, in cap dispframe,
40           out errval err);
41
42  // Kill a domain for which the caller has a domain cap.
43  rpc kill(in cap domain_cap, out errval err);
44
45  // Let the process manager know the caller has finished execution.
46  //message exit(cap domain_cap, uint8 status);
47  rpc exit(in cap domain_cap, in uint8 status);
48
49  rpc wait(in cap domain_cap, in bool nohang, out errval err, out uint8 status);
50
51
52  rpc get_status(in uint32 domainid, out ps_entry ps_entry, 
53                 out char argv[len, 2048], out errval err);
54
55  // 4 uint8 are merged to a 32 bit domaind.
56  rpc get_domainlist(out uint8 domains[len, 4096]);
57};
58