Add spawn, spawn_with_caps and span calls to the Process Manager API.
[barrelfish] / if / spawn.if
index 2c2e4aa..cf1ea52 100644 (file)
@@ -12,14 +12,49 @@ interface spawn "Interface to spawn domains" {
     uint8 status;
     } ps_entry;
 
-    rpc spawn_domain(in string path, in char argvbuf[argvbytes], in char envbuf[envbytes],
+    rpc spawn_domain(in String path[2048], in char argvbuf[argvbytes, 2048], in char envbuf[envbytes, 2048],
                      in uint8 flags, out errval err, out domainid domain_id);
 
-    rpc spawn_domain_with_caps(in string path, in char argvbuf[argvbytes],
-                               in char envbuf[envbytes], in cap inheritcn_cap,
+    rpc spawn_domain_with_caps(in String path[2048], in char argvbuf[argvbytes, 2048],
+                               in char envbuf[envbytes, 2048], in cap inheritcn_cap,
                                in cap argcn_cap, in uint8 flags, out errval err,
                                out domainid domain_id);
 
+    // Messages for the async interface with the process manager.
+    message spawn_request(cap domain_cap,
+                          String path[2048],
+                          char argvbuf[argvbytes, 2048],
+                          char envbuf[envbytes, 2048],
+                          uint8 flags);
+    message spawn_with_caps_request(cap domain_cap,
+                                    String path[2048],
+                                    char argvbuf[argvbytes, 2048],
+                                    char envbuf[envbytes, 2048],
+                                    cap inheritcn_cap,
+                                    cap argcn_cap,
+                                    uint8 flags);
+    message span_request(cap domain_cap, cap vroot, cap dispframe);
+    message kill_request(cap domain_cap);
+    message spawn_reply(cap domain_cap, errval err);
+
+    rpc spawn_proc_mgmt_domain(in cap domain_cap,
+                               in String path[2048],
+                               in char argvbuf[argvbytes, 2048],
+                               in char envbuf[envbytes, 2048],
+                               in uint8 flags,
+                               out errval err);
+
+    rpc spawn_proc_mgmt_domain_with_caps(in cap domain_cap,
+                                         in String path[2048],
+                                         in char argvbuf[argvbytes, 2048],
+                                         in char envbuf[envbytes, 2048],
+                                         in cap inheritcn_cap,
+                                         in cap argcn_cap,
+                                         in uint8 flags,
+                                         out errval err);
+
+    rpc span(in cap domain_cap, in cap vroot, in cap dispframe, out errval err);
+
     rpc use_local_memserv();
     rpc kill(in domainid domain_id, out errval err);
 
@@ -32,9 +67,9 @@ interface spawn "Interface to spawn domains" {
     rpc wait(in domainid domain_id, in bool nohang, out uint8 exitcode, out errval err);
 
     // XXX: Should be domainid instead of uint8, but it's not yet supported
-    rpc get_domainlist(out uint8 domains[len]);
+    rpc get_domainlist(out uint8 domains[len, 2048]);
 
-    rpc status(in domainid domain_id, out ps_entry ps_entry, out char argv[len],
+    rpc status(in domainid domain_id, out ps_entry ps_entry, out char argv[len, 2048],
               out errval err);
 
     // Capability debugging