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, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group. 8 */ 9 10interface 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 31 message spawn_with_caps_request(cap procmng_cap, 32 cap domain_cap, 33 String path[2048], 34 char argvbuf[argvbytes, 2048], 35 char envbuf[envbytes, 2048], 36 cap inheritcn_cap, 37 cap argcn_cap, 38 uint8 flags); 39 40 message span_request(cap procmng_cap, cap domain_cap, cap vroot, 41 cap dispframe); 42 43 message kill_request(cap procmng_cap, cap domain_cap); 44 45 message cleanup_request(cap procmng_cap, cap domain_cap); 46 47 message spawn_reply(errval err); 48 49 rpc spawn_proc_mgmt_domain(in cap domain_cap, 50 in String path[2048], 51 in char argvbuf[argvbytes, 2048], 52 in char envbuf[envbytes, 2048], 53 in uint8 flags, 54 out errval err); 55 56 rpc spawn_proc_mgmt_domain_with_caps(in cap domain_cap, 57 in String path[2048], 58 in char argvbuf[argvbytes, 2048], 59 in char envbuf[envbytes, 2048], 60 in cap inheritcn_cap, 61 in cap argcn_cap, 62 in uint8 flags, 63 out errval err); 64 65 rpc span(in cap domain_cap, in cap vroot, in cap dispframe, out errval err); 66 67 rpc use_local_memserv(); 68 rpc kill(in domainid domain_id, out errval err); 69 70 /* 71 * XXX: domain_id shouldn't be here. Instead, spawnd should figure 72 * out from the binding what domain it is sending the request. 73 */ 74 rpc exit(in domainid domain_id, in uint8 exitcode); 75 76 rpc wait(in domainid domain_id, in bool nohang, out uint8 exitcode, out errval err); 77 78 // XXX: Should be domainid instead of uint8, but it's not yet supported 79 rpc get_domainlist(out uint8 domains[len, 2048]); 80 81 rpc status(in domainid domain_id, out ps_entry ps_entry, out char argv[len, 2048], 82 out errval err); 83 84 // Capability debugging 85 rpc dump_capabilities(in domainid domain_id, out errval err); 86}; 87