UbixOS
2.0
|
#include <ubixos/exec.h>
#include <sys/elf.h>
#include <ubixos/ld.h>
#include <ubixos/kpanic.h>
#include <ubixos/endtask.h>
#include <vmm/vmm.h>
#include <lib/kmalloc.h>
#include <lib/kprintf.h>
#include <lib/string.h>
#include <assert.h>
Go to the source code of this file.
Macros | |
#define | AT_BASE 7 /* Interpreter's base address. */ |
#define | AT_ENTRY 9 /* Where interpreter should transfer control. */ |
#define | AT_EXECFD 2 /* File descriptor of program to load. */ |
#define | AT_FLAGS 8 /* Flags (unused for i386). */ |
#define | AT_IGNORE 1 /* Ignored entry. */ |
#define | AT_NULL 0 /* Terminates the vector. */ |
#define | AT_PAGESZ 6 /* Page size in bytes. */ |
#define | AT_PHDR 3 /* Program header of program already loaded. */ |
#define | AT_PHENT 4 /* Size of each program header entry. */ |
#define | AT_PHNUM 5 /* Number of program header entries. */ |
#define | AUXARGS_ENTRY(pos, id, val) {*pos = id;pos++; *pos = val;pos++;} |
#define | STACK_ADDR 0xC800000 |
Functions | |
void | execFile (char *file, int argc, char **argv, int console) |
uInt32 | execThread (void(*tproc)(void), uInt32 stack, char *arg) |
void | sys_exec (char *file, char *ap) |
New exec... More... | |
void | sysExec (char *file, char *ap) |
#define AT_ENTRY 9 /* Where interpreter should transfer control. */ |
#define AT_PHDR 3 /* Program header of program already loaded. */ |
void execFile | ( | char * | file, |
int | argc, | ||
char ** | argv, | ||
int | console | ||
) |
Definition at line 153 of file exec.c.
References _current, assert, tssStruct::back_link, tssStruct::cr3, tssStruct::cs, tssStruct::ds, tssStruct::ebp, tssStruct::edi, tssStruct::eflags, tssStruct::eip, tssStruct::es, tssStruct::esi, tssStruct::esp, tssStruct::esp0, tssStruct::esp1, tssStruct::esp2, fclose(), fopen(), fread(), tssStruct::fs, fseek(), taskStruct::gid, tssStruct::gs, taskStruct::id, tssStruct::io_map, K_PANIC, KERNEL_PAGE_DEFAULT, kernelPageDirectory, kfree(), kmalloc(), kpanic(), kprintf(), tssStruct::ldt, memset(), taskStruct::oInfo, tty_termNode::owner, PAGE_DEFAULT, PAGE_PRESENT, PAGE_STACK, PAGE_USER, fileDescriptor::perms, READY, sched_setStatus(), schedNewTask(), tssStruct::ss, tssStruct::ss0, tssStruct::ss1, tssStruct::ss2, STACK_ADDR, taskStruct::td, taskStruct::term, tssStruct::trace_bitmap, taskStruct::tss, tty_find(), taskStruct::uid, thread::vm_daddr, vmm_findFreePage(), vmm_remapPage(), vmm_setPageAttributes(), and osInfo::vmStart.
Definition at line 66 of file exec.c.
References assert, tssStruct::back_link, tssStruct::cr3, tssStruct::cs, tssStruct::ds, tssStruct::ebp, tssStruct::edi, tssStruct::eflags, tssStruct::eip, tssStruct::es, tssStruct::esi, tssStruct::esp, tssStruct::esp0, tssStruct::esp1, tssStruct::esp2, tssStruct::fs, tssStruct::gs, taskStruct::id, tssStruct::io_map, kernelPageDirectory, kpanic(), tssStruct::ldt, taskStruct::oInfo, READY, sched_setStatus(), schedNewTask(), tssStruct::ss, tssStruct::ss0, tssStruct::ss1, tssStruct::ss2, tssStruct::trace_bitmap, taskStruct::tss, and osInfo::vmStart.
Referenced by sdeThread(), systemTask(), and ubthread_create().
void sys_exec | ( | char * | file, |
char * | ap | ||
) |
New exec...
copy in arg strings
Clean the virtual of COW pages left over from the fork
Adjust iframe
build argc and argv[]
Build ENV
Definition at line 551 of file exec.c.
Referenced by sys_execve().
void sysExec | ( | char * | file, |
char * | ap | ||
) |
Clean the virtual of COW pages left over from the fork
Adjust iframe
build argc and argv[]
Definition at line 340 of file exec.c.
References _current, assert, i386_frame::ebp, i386_frame::eip, endTask(), tssStruct::esp0, fclose(), taskStruct::files, fopen(), fread(), fseek(), taskStruct::id, K_PANIC, kfree(), kmalloc(), kpanic(), kprintf(), ldEnable(), memset(), taskStruct::oInfo, PAGE_DEFAULT, PAGE_PRESENT, PAGE_SHIFT, PAGE_SIZE, PAGE_USER, fileDescriptor::perms, PT_DYNAMIC, PT_INTERP, PT_LOAD, round_page, STACK_ADDR, strcpy(), strlen(), taskStruct::td, trunc_page, taskStruct::tss, i386_frame::user_esp, thread::vm_daddr, thread::vm_dsize, VM_TASK, vmm_cleanVirtualSpace(), vmm_findFreePage(), vmm_remapPage(), vmm_setPageAttributes(), and osInfo::vmStart.