spawn_with_cap: workaround
[barrelfish] / if / spawn.if
1 /*
2  * Copyright (c) 2007, 2008, 2009, 2010, 2011, 2012, 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 spawn "Interface to spawn domains" {
11     typedef struct {
12     uint8 status;
13     } ps_entry;
14
15     rpc spawn_domain(in string path, in char argvbuf[argvbytes], in char envbuf[envbytes],
16                      out errval err, out domainid domain_id);
17
18     rpc spawn_domain_with_caps(in string path, in char argvbuf[argvbytes],
19                                in char envbuf[envbytes], in cap inheritcn_cap,
20                                in cap argcn_cap, out errval err,
21                                out domainid domain_id);
22     
23     /*
24      * XXX: little hack to allow spawning with caps using UMP
25      */                     
26     rpc spawn_domain_with_argcap(in string path, in char argvbuf[argvbytes],
27                                in char envbuf[envbytes], in cap argcn_cap, 
28                                out errval err, out domainid domain_id);
29
30     rpc use_local_memserv();
31     rpc kill(in domainid domain_id, out errval err);
32
33     /*
34      * XXX: domain_id shouldn't be here. Instead, spawnd should figure
35      * out from the binding what domain it is sending the request.
36      */
37     rpc exit(in domainid domain_id, in uint8 exitcode);
38
39     rpc wait(in domainid domain_id, in bool nohang, out uint8 exitcode, out errval err);
40
41     // XXX: Should be domainid instead of uint8, but it's not yet supported
42     rpc get_domainlist(out uint8 domains[len]);
43
44     rpc status(in domainid domain_id, out ps_entry ps_entry, out char argv[len],
45                out errval err);
46 };