git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Multiuser, Capabilities and Access Controls (#54)
[lunaix-os.git]
/
lunaix-os
/
includes
/
lunaix
/
exec.h
diff --git
a/lunaix-os/includes/lunaix/exec.h
b/lunaix-os/includes/lunaix/exec.h
index a49845e9724cf77a504327f3c463db953dcd16be..50f94898a4b0ae4cb7daf0abe9d93c11e0ea7527 100644
(file)
--- a/
lunaix-os/includes/lunaix/exec.h
+++ b/
lunaix-os/includes/lunaix/exec.h
@@
-5,14
+5,16
@@
#include <lunaix/process.h>
#include <lunaix/types.h>
#include <lunaix/process.h>
#include <lunaix/types.h>
+#define MAX_PARAM_LEN 1024
+#define MAX_PARAM_SIZE 4096
+
#define MAX_VAR_PAGES 8
#define DEFAULT_HEAP_PAGES 16
#define MAX_VAR_PAGES 8
#define DEFAULT_HEAP_PAGES 16
-struct exec_context;
-
struct load_context
{
struct load_context
{
- struct exec_container* container;
+ struct exec_host* container;
+
ptr_t base;
ptr_t end;
ptr_t mem_sz;
ptr_t base;
ptr_t end;
ptr_t mem_sz;
@@
-20,17
+22,25
@@
struct load_context
ptr_t entry;
};
ptr_t entry;
};
-struct exec_container
+struct exec_arrptr
+{
+ unsigned int len;
+ unsigned int size;
+ ptr_t raw;
+ ptr_t copied;
+};
+
+
+struct exec_host
{
struct proc_info* proc;
ptr_t vms_mnt;
struct load_context exe;
{
struct proc_info* proc;
ptr_t vms_mnt;
struct load_context exe;
+ struct v_inode* inode;
- // argv prependums
- const char* argv_pp[2];
- const char** argv;
- const char** envp;
+ struct exec_arrptr argv;
+ struct exec_arrptr envp;
ptr_t stack_top;
ptr_t stack_top;
@@
-45,24
+55,23
@@
struct uexec_param
char** envp;
} compact;
char** envp;
} compact;
-#ifndef __USR_WRAPPER__
+int
+exec_arch_prepare_entry(struct thread* thread, struct exec_host* container);
int
int
-exec_load_byname(struct exec_
container
* container, const char* filename);
+exec_load_byname(struct exec_
host
* container, const char* filename);
int
int
-exec_load(struct exec_
container
* container, struct v_file* executable);
+exec_load(struct exec_
host
* container, struct v_file* executable);
int
exec_kexecve(const char* filename, const char* argv[], const char* envp[]);
void
int
exec_kexecve(const char* filename, const char* argv[], const char* envp[]);
void
-exec_init_container(struct exec_
container
* param,
+exec_init_container(struct exec_
host
* param,
struct thread* thread,
ptr_t vms,
const char** argv,
const char** envp);
struct thread* thread,
ptr_t vms,
const char** argv,
const char** envp);
-#endif
-
#endif /* __LUNAIX_LOADER_H */
#endif /* __LUNAIX_LOADER_H */