1/* 2 * Copyright (c) 2017, 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 proc_mgmt "Process management service" { 11 12 typedef struct { 13 uint8 status; 14 } ps_entry; 15 16 // Add a new spawnd to the process manager's list. 17 message add_spawnd(coreid core, iref iref); 18 19 // Spawn a new domain, returning its domain cap. 20 rpc spawn(in coreid core, 21 in String path[2048], 22 in char argvbuf[argvbytes, 2048], 23 in char envbuf[envbytes, 2048], 24 in uint8 flags, 25 out errval err, 26 out cap domain_cap); 27 28 rpc spawn_with_caps(in coreid core, 29 in String path[2048], 30 in char argvbuf[argvbytes, 2048], 31 in char envbuf[envbytes, 2048], 32 in cap inheritcn_cap, 33 in cap argcn_cap, 34 in uint8 flags, 35 out errval err, 36 out cap domain_cap); 37 38 // Span a new core for a given domain, based on provided vroot and dispframe. 39 rpc span(in cap domain_cap, in coreid core, in cap vroot, in cap dispframe, 40 out errval err); 41 42 // Kill a domain for which the caller has a domain cap. 43 rpc kill(in cap domain_cap, out errval err); 44 45 // Let the process manager know the caller has finished execution. 46 //message exit(cap domain_cap, uint8 status); 47 rpc exit(in cap domain_cap, in uint8 status); 48 49 rpc wait(in cap domain_cap, in bool nohang, out errval err, out uint8 status); 50 51 52 rpc get_status(in uint32 domainid, out ps_entry ps_entry, 53 out char argv[len, 2048], out errval err); 54 55 // 4 uint8 are merged to a 32 bit domaind. 56 rpc get_domainlist(out uint8 domains[len, 4096]); 57}; 58