feat: better rtc framework which aims to remove single rtc restrictions.
[lunaix-os.git] / lunaix-os / includes / lunaix / exec.h
1 #ifndef __LUNAIX_EXEC_H
2 #define __LUNAIX_EXEC_H
3
4 #include <lunaix/fs.h>
5 #include <lunaix/process.h>
6 #include <lunaix/types.h>
7
8 #define MAX_VAR_PAGES 8
9 #define DEFAULT_HEAP_PAGES 16
10
11 struct exec_context;
12
13 struct load_context
14 {
15     struct exec_container* container;
16     ptr_t base;
17     ptr_t end;
18     ptr_t mem_sz;
19
20     ptr_t entry;
21 };
22
23 struct exec_container
24 {
25     struct proc_info* proc;
26     ptr_t vms_mnt;
27
28     struct load_context exe;
29
30     // argv prependums
31     const char* argv_pp[2];
32     const char** argv;
33     const char** envp;
34
35     ptr_t stack_top;
36
37     int status;
38 };
39
40 struct uexec_param
41 {
42     int argc;
43     char** argv;
44     int envc;
45     char** envp;
46 } PACKED;
47
48 #ifndef __USR_WRAPPER__
49
50 int
51 exec_load_byname(struct exec_container* container, const char* filename);
52
53 int
54 exec_load(struct exec_container* container, struct v_file* executable);
55
56 int
57 exec_kexecve(const char* filename, const char* argv[], const char* envp[]);
58
59 #endif
60
61 #endif /* __LUNAIX_LOADER_H */