7-ps2_keyboard.md and 8-multitasking.md (#29)
[lunaix-os.git] / lunaix-os / includes / lunaix / exec.h
index 00f4d398b42fef007760b3257857e9e5a5fc4b6b..a49845e9724cf77a504327f3c463db953dcd16be 100644 (file)
@@ -1,14 +1,10 @@
 #ifndef __LUNAIX_EXEC_H
 #define __LUNAIX_EXEC_H
 
-#include <lunaix/elf.h>
 #include <lunaix/fs.h>
 #include <lunaix/process.h>
 #include <lunaix/types.h>
 
-#define NO_LOADER 0
-#define DEFAULT_LOADER "usr/ld"
-
 #define MAX_VAR_PAGES 8
 #define DEFAULT_HEAP_PAGES 16
 
@@ -29,10 +25,14 @@ struct exec_container
     struct proc_info* proc;
     ptr_t vms_mnt;
 
-    struct load_context executable;
+    struct load_context exe;
+
+    // argv prependums
+    const char* argv_pp[2];
+    const char** argv;
+    const char** envp;
 
     ptr_t stack_top;
-    ptr_t entry; // mapped to one of {executable|loader}.entry
 
     int status;
 };
@@ -43,24 +43,25 @@ struct uexec_param
     char** argv;
     int envc;
     char** envp;
-} PACKED;
+} compact;
 
 #ifndef __USR_WRAPPER__
 
 int
-exec_load_byname(struct exec_container* container,
-                 const char* filename,
-                 const char** argv,
-                 const char** envp);
+exec_load_byname(struct exec_container* container, const char* filename);
 
 int
-exec_load(struct exec_container* container,
-          struct v_file* executable,
-          const char** argv,
-          const char** envp);
+exec_load(struct exec_container* container, struct v_file* executable);
 
 int
-exec_kexecve(const char* filename, const char* argv[], const char* envp);
+exec_kexecve(const char* filename, const char* argv[], const char* envp[]);
+
+void
+exec_init_container(struct exec_container* param,
+                    struct thread* thread,
+                    ptr_t vms,
+                    const char** argv,
+                    const char** envp);
 
 #endif