mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-10-30 22:18:21 +00:00
bugfixes, change types.h to be linux abi, stat system call
This commit is contained in:
@@ -71,12 +71,6 @@ static void* stacksetup(char* interp, char** argv, char** env, elf_header64 head
|
||||
++envc;
|
||||
}
|
||||
|
||||
if(interp){
|
||||
argdatasize += strlen(interp) + 1;
|
||||
initialsize += strlen(interp) + 1;
|
||||
initialsize += sizeof(char*); // interpreter ptr
|
||||
}
|
||||
|
||||
// pointers to args and envs
|
||||
|
||||
initialsize += argc*sizeof(char*); //args
|
||||
@@ -97,8 +91,6 @@ static void* stacksetup(char* interp, char** argv, char** env, elf_header64 head
|
||||
// count + 1 because of a null entry
|
||||
char** envstart = (void*)auxvstart - (envc + 1)*sizeof(char*);
|
||||
char** argstart = (void*)envstart - (argc + 1)*sizeof(char*);
|
||||
if(interp)
|
||||
--argstart;
|
||||
|
||||
size_t* argcptr = (void*)argstart - sizeof(size_t);
|
||||
|
||||
@@ -136,12 +128,6 @@ static void* stacksetup(char* interp, char** argv, char** env, elf_header64 head
|
||||
// copy the data
|
||||
|
||||
|
||||
if(interp){
|
||||
strcpy(argdatastart, interp);
|
||||
*argstart++ = argdatastart;
|
||||
argdatastart += strlen(interp) + 1;
|
||||
}
|
||||
|
||||
for(size_t i = 0; i < argc; ++i){
|
||||
strcpy(argdatastart, argv[i]);
|
||||
*argstart++ = argdatastart;
|
||||
@@ -158,9 +144,6 @@ static void* stacksetup(char* interp, char** argv, char** env, elf_header64 head
|
||||
|
||||
*envstart = NULL;
|
||||
|
||||
if(interp)
|
||||
argc++;
|
||||
|
||||
*argcptr = argc;
|
||||
|
||||
|
||||
|
||||
@@ -72,12 +72,8 @@ static thread_t* allocthread(proc_t* proc, state_t state, pid_t tid, size_t ksta
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
// XXX use alloc() when it's better
|
||||
|
||||
size_t pagec = kstacksize / PAGE_SIZE + 1;
|
||||
|
||||
thread->kernelstackbase = pmm_hhdmalloc(pagec);
|
||||
thread->kernelstackbase = alloc(kstacksize);
|
||||
|
||||
|
||||
if(!thread->kernelstackbase){
|
||||
@@ -98,8 +94,7 @@ static thread_t* allocthread(proc_t* proc, state_t state, pid_t tid, size_t ksta
|
||||
|
||||
static thread_t* freethread(thread_t* thread){
|
||||
free(thread->regs);
|
||||
// XXX use free() when it's better
|
||||
pmm_free(thread->kernelstackbase, thread->stacksize / PAGE_SIZE + 1);
|
||||
free(thread->kernelstack);
|
||||
free(thread);
|
||||
}
|
||||
|
||||
@@ -330,7 +325,7 @@ void sched_runinit(){
|
||||
_panic("Could not load init", 0);
|
||||
}
|
||||
|
||||
char* argv[] = {"/sbin/init", NULL};
|
||||
char* argv[] = {"/usr/bin/bash", NULL};
|
||||
char* env[] = {NULL};
|
||||
|
||||
ret = elf_load(thread, node, argv, env);
|
||||
|
||||
Reference in New Issue
Block a user