libbarrelfish: started merging proc_mgmt_client and spawn_client
[barrelfish] / include / barrelfish / spawn_client.h
1 /*
2  * Copyright (c) 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 #ifndef BARRELFISH_SPAWN_CLIENT_H
11 #define BARRELFISH_SPAWN_CLIENT_H
12
13 #include <sys/cdefs.h>
14 #include <barrelfish_kpi/types.h>
15 #include <spawndomain/spawndomain.h>
16 __BEGIN_DECLS
17
18 struct spawn_ps_entry {
19     uint8_t status;
20 };
21
22
23
24 /* Inherit CNode, layout convention #spawn_program_with_caps expects */
25 #define INHERITCN_SLOT_FDSPAGE   1  ///< cap for inherited file descriptors
26 #define INHERITCN_SLOT_SESSIONID 2  ///< Session ID domain belongs to
27 #define INHERITCN_SLOT_KERNELCAP 3     ///< Kernel capability for core boot
28
29 errval_t spawn_program_with_caps(coreid_t coreid, const char *path,
30                                  char *const argv[], char *const envp[],
31                                  struct capref inheritcn_cap,
32                                  struct capref argcn_cap, spawn_flags_t flags,
33                                  struct capref *ret_domain_cap);
34 errval_t spawn_arrakis_program(coreid_t coreid, const char *path,
35                                  char *const argv[], char *const envp[],
36                                  struct capref inheritcn_cap,
37                                  struct capref argcn_cap, spawn_flags_t flags,
38                                  domainid_t* domainid);
39 errval_t spawn_program(coreid_t coreid, const char *path,
40                        char *const argv[], char *const envp[],
41                        spawn_flags_t flags, struct capref *ret_domain_cap);
42 errval_t spawn_program_on_all_cores(bool same_core, const char *path,
43                                     char *const argv[], char *const envp[],
44                                     spawn_flags_t flags, struct capref *ret_domain_cap,
45                                     coreid_t* spawn_count);
46 errval_t spawn_kill(struct capref domain_cap);
47 errval_t spawn_exit(uint8_t exitcode);
48 errval_t spawn_wait_coreid(coreid_t coreid, struct capref domain_cap, uint8_t *exitcode, bool nohang);
49 errval_t spawn_wait(struct capref domain_cap, uint8_t *exitcode, bool nohang);
50 errval_t spawn_wait_core(coreid_t coreid, struct capref domainid,
51                          uint8_t *exitcode, bool nohang);
52 errval_t spawn_binding(coreid_t coreid, struct spawn_binding **ret_client);
53 errval_t spawn_bind_iref(iref_t iref, struct spawn_binding **ret_client);
54 errval_t spawn_get_domain_list(uint8_t **domains, size_t *len);
55 errval_t spawn_get_status(uint8_t domainid, struct spawn_ps_entry *pse,
56                           char **argbuf, size_t *arglen, errval_t *reterr);
57
58 errval_t alloc_inheritcn_with_caps(struct capref *inheritcn_capp,
59                                    struct capref fdcap,
60                                    struct capref sidcap,
61                                    struct capref kernelcap);
62
63 // definitions for compatibility reasons (_poxsixcompat and unimplemented in proc_mgmt)
64 errval_t spawn_wait_compat(uint8_t domaind, uint8_t *exitcode, bool nohang);
65 errval_t spawn_dump_capabilities_compat(domainid_t domainid);
66 __END_DECLS
67
68 #endif // BARRELFISH_SPAWN_CLIENT_H