2 * Copyright (c) 2007, 2008, 2009, 2010, 2011, 2012, ETH Zurich.
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.
10 interface spawn "Interface to spawn domains" {
15 rpc spawn_domain(in String path[2048], in char argvbuf[argvbytes, 2048], in char envbuf[envbytes, 2048],
16 in uint8 flags, out errval err, out domainid domain_id);
18 rpc spawn_domain_with_caps(in String path[2048], in char argvbuf[argvbytes, 2048],
19 in char envbuf[envbytes, 2048], in cap inheritcn_cap,
20 in cap argcn_cap, in uint8 flags, out errval err,
21 out domainid domain_id);
23 // Messages for the async interface with the process manager.
24 message spawn_request(cap procmng_cap,
27 char argvbuf[argvbytes, 2048],
28 char envbuf[envbytes, 2048],
30 message spawn_reply(cap domain_cap, errval err);
32 message spawn_with_caps_request(cap procmng_cap,
35 char argvbuf[argvbytes, 2048],
36 char envbuf[envbytes, 2048],
40 message spawn_with_caps_reply(cap domain_cap, errval err);
42 message span_request(cap procmng_cap, cap domain_cap, cap vroot,
44 message span_reply(cap domain_cap, errval err);
46 message kill_request(cap procmng_cap, cap domain_cap);
47 message kill_reply(cap domain_cap, errval err);
49 message exit_request(cap procmng_cap, cap domain_cap);
50 message exit_reply(cap domain_cap, errval err);
52 message cleanup_request(cap procmng_cap, cap domain_cap);
53 message cleanup_reply(cap domain_cap, errval err);
55 rpc spawn_proc_mgmt_domain(in cap domain_cap,
57 in char argvbuf[argvbytes, 2048],
58 in char envbuf[envbytes, 2048],
62 rpc spawn_proc_mgmt_domain_with_caps(in cap domain_cap,
64 in char argvbuf[argvbytes, 2048],
65 in char envbuf[envbytes, 2048],
71 rpc span(in cap domain_cap, in cap vroot, in cap dispframe, out errval err);
73 rpc use_local_memserv();
74 rpc kill(in domainid domain_id, out errval err);
77 * XXX: domain_id shouldn't be here. Instead, spawnd should figure
78 * out from the binding what domain it is sending the request.
80 rpc exit(in domainid domain_id, in uint8 exitcode);
82 rpc wait(in domainid domain_id, in bool nohang, out uint8 exitcode, out errval err);
84 // XXX: Should be domainid instead of uint8, but it's not yet supported
85 rpc get_domainlist(out uint8 domains[len, 2048]);
87 rpc status(in domainid domain_id, out ps_entry ps_entry, out char argv[len, 2048],
90 // Capability debugging
91 rpc dump_capabilities(in domainid domain_id, out errval err);