Add specs for argenv interface with the kernel
authorKevin Klues <klueska@cs.berkeley.edu>
Sat, 11 Jul 2015 00:02:40 +0000 (17:02 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 14 Jul 2015 14:33:16 +0000 (10:33 -0400)
The argenv struct defines the layout of the argenv pointer serialized by
the user function serialized_argv_envp.  This will become important as
we move towards passing this pointer to sys_proc_create() and
sys_exec().

kern/include/ros/syscall.h

index 8472058..1e6d8f7 100644 (file)
@@ -37,6 +37,19 @@ struct childfdmap {
        int                                                     ok;
 };
 
+struct argenv {
+       size_t argc;
+       size_t envc;
+       char buf[];
+       /* The buf array is laid out as follows:
+        * buf {
+        *   char *argv[argc]; // Offset of arg relative to &argbuf[0]
+        *   char *envp[envc]; // Offset of envvar relative to &argbuf[0]
+        *   char argbuf[sum(map(strlen + 1, argv + envp))];
+        * }
+        */
+};
+
 #ifndef ROS_KERNEL
 
 /* Temp hack, til the rest of glibc/userspace uses sys/syscall.h */