Add spawn, spawn_with_caps and span calls to the Process Manager API.
[barrelfish] / usr / spawnd / ps.h
1 /*
2  * Copyright (c) 2009, 2011, 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 #ifndef PS_H
11 #define PS_H
12
13 #include <stdbool.h>
14 #include <barrelfish/barrelfish.h>
15 #include <barrelfish_kpi/types.h>
16 #include <barrelfish_kpi/init.h>
17
18 #define MAX_DOMAINS     256
19
20 enum ps_status {
21     PS_STATUS_RUNNING,
22     PS_STATUS_ZOMBIE
23 };
24
25 struct ps_waiter {
26     struct ps_waiter *next;
27     struct spawn_binding *binding;
28 };
29
30 struct ps_entry {
31     char *argv[MAX_CMDLINE_ARGS];
32     char *argbuf;
33     size_t argbytes;
34     struct capref domain_cap;
35     struct capref rootcn_cap;
36     struct capref dcb;
37     struct cnoderef rootcn;
38     uint8_t exitcode;
39     enum ps_status status;
40     struct ps_waiter *waiters;
41 };
42
43 errval_t ps_allocate(struct ps_entry *entry, domainid_t *domainid);
44 void ps_remove(domainid_t domain_id);
45 bool ps_exists(domainid_t domain_id);
46 struct ps_entry *ps_get(domainid_t domain_id);
47
48 #endif