Add per-spawnd message queues to the process manager.
[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[2048], in char argvbuf[argvbytes, 2048], in char envbuf[envbytes, 2048],
16                      in uint8 flags, out errval err, out domainid domain_id);
17
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);
22
23     // Messages for the async interface with the process manager.
24     message spawn_request(cap procmng_cap,
25                           cap domain_cap,
26                           String path[2048],
27                           char argvbuf[argvbytes, 2048],
28                           char envbuf[envbytes, 2048],
29                           uint8 flags);
30     message spawn_reply(cap domain_cap, errval err);
31
32     message spawn_with_caps_request(cap procmng_cap,
33                                     cap domain_cap,
34                                     String path[2048],
35                                     char argvbuf[argvbytes, 2048],
36                                     char envbuf[envbytes, 2048],
37                                     cap inheritcn_cap,
38                                     cap argcn_cap,
39                                     uint8 flags);
40     message spawn_with_caps_reply(cap domain_cap, errval err);
41
42     message span_request(cap procmng_cap, cap domain_cap, cap vroot,
43                          cap dispframe);
44     message span_reply(cap domain_cap, errval err);
45
46     message kill_request(cap procmng_cap, cap domain_cap);
47     message kill_reply(cap domain_cap, errval err);
48
49     message exit_request(cap procmng_cap, cap domain_cap);
50     message exit_reply(cap domain_cap, errval err);
51
52     message cleanup_request(cap procmng_cap, cap domain_cap);
53     message cleanup_reply(cap domain_cap, errval err);
54
55     rpc spawn_proc_mgmt_domain(in cap domain_cap,
56                                in String path[2048],
57                                in char argvbuf[argvbytes, 2048],
58                                in char envbuf[envbytes, 2048],
59                                in uint8 flags,
60                                out errval err);
61
62     rpc spawn_proc_mgmt_domain_with_caps(in cap domain_cap,
63                                          in String path[2048],
64                                          in char argvbuf[argvbytes, 2048],
65                                          in char envbuf[envbytes, 2048],
66                                          in cap inheritcn_cap,
67                                          in cap argcn_cap,
68                                          in uint8 flags,
69                                          out errval err);
70
71     rpc span(in cap domain_cap, in cap vroot, in cap dispframe, out errval err);
72
73     rpc use_local_memserv();
74     rpc kill(in domainid domain_id, out errval err);
75
76     /*
77      * XXX: domain_id shouldn't be here. Instead, spawnd should figure
78      * out from the binding what domain it is sending the request.
79      */
80     rpc exit(in domainid domain_id, in uint8 exitcode);
81
82     rpc wait(in domainid domain_id, in bool nohang, out uint8 exitcode, out errval err);
83
84     // XXX: Should be domainid instead of uint8, but it's not yet supported
85     rpc get_domainlist(out uint8 domains[len, 2048]);
86
87     rpc status(in domainid domain_id, out ps_entry ps_entry, out char argv[len, 2048],
88                out errval err);
89
90     // Capability debugging
91     rpc dump_capabilities(in domainid domain_id, out errval err);
92 };