diff options
| author | Miguel <m.i@gmx.at> | 2018-09-03 00:07:20 +0200 |
|---|---|---|
| committer | Miguel <m.i@gmx.at> | 2018-09-03 00:07:20 +0200 |
| commit | 38b1273c7e3a52ae929f36fe07e29bc68ef95102 (patch) | |
| tree | 16734c1c190825159f6ca9696d9c5cfb04e89c8f /kernel | |
| parent | fd5a9b87e47bc072aa63fcaf5735232a37338303 (diff) | |
clean filenames etc
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/gdt.c | 2 | ||||
| -rw-r--r-- | kernel/kernel.c | 2 | ||||
| -rw-r--r-- | kernel/mp.c | 5 | ||||
| -rw-r--r-- | kernel/scheduler.c | 33 | ||||
| -rw-r--r-- | kernel/usermode.c | 45 | ||||
| -rw-r--r-- | kernel/usermode.h | 0 |
6 files changed, 34 insertions, 53 deletions
diff --git a/kernel/gdt.c b/kernel/gdt.c index 562fbd5..d1ed382 100644 --- a/kernel/gdt.c +++ b/kernel/gdt.c @@ -2,8 +2,6 @@ #include "kernel/kernel.h" #include "kernel/gdt.h" -#include "usermode.h" - #include <stdint.h> #define GDT_SIZE 6 diff --git a/kernel/kernel.c b/kernel/kernel.c index 9381091..7058a8a 100644 --- a/kernel/kernel.c +++ b/kernel/kernel.c @@ -58,7 +58,7 @@ void kernel_main(uint32_t eax,uint32_t ebx) // https://wiki.osdev.org/Symmetric_Multiprocessing klog("Symmetric Multi Processing (SMP) start ... "); smp_log_procdata(&procdata); - smp_start_aps(&procdata); + //smp_start_aps(&procdata); klog("Vritual Memory / Paging init ... "); pdirectory *dir=vmem_init(kernel_blocks,(uint32_t)info->framebuffer_addr); diff --git a/kernel/mp.c b/kernel/mp.c index e03f224..5cd58ac 100644 --- a/kernel/mp.c +++ b/kernel/mp.c @@ -1,13 +1,10 @@ #include "kernel/kernel.h" - #include <stdbool.h> #include "asm/x86.h" #include "smp.h" - - typedef struct mp_fps_struct { uint32_t sig; //signature "_MP_" @@ -49,8 +46,6 @@ typedef struct mp_config_struct }mp_config; - - typedef struct proc_struct { uint8_t type; //0=processor diff --git a/kernel/scheduler.c b/kernel/scheduler.c index cfd0fcd..5316438 100644 --- a/kernel/scheduler.c +++ b/kernel/scheduler.c @@ -292,3 +292,36 @@ volatile void task_set_brk(uint32_t brk) { task_list[current_task].brk=brk; } + +void userfunc() +{ + + // we need enable here again (since the pushed eflags have it disabled)! + x86_sti(); + + // if we are pid 0, replace ourselves with /bin/init and enter usermode + if(task_get_current_pid()==0) + { + uint32_t alloc; + uint32_t entry_global=load_elf(BIN_INIT,&alloc); + task_set_brk(alloc); + asm_usermode(entry_global); + } + + // kernel worker thread: SLEEPER + if(task_get_current_pid()==1) + { + while(1) + { + __asm__("hlt"); + } + } + + // kernel worker thread: SYSCALL CHECKER + if(task_get_current_pid()==2) + { + task_syscall_worker(); + } +} + + diff --git a/kernel/usermode.c b/kernel/usermode.c deleted file mode 100644 index ee8b9db..0000000 --- a/kernel/usermode.c +++ /dev/null @@ -1,45 +0,0 @@ -#include "usermode.h" - -#include "syscalls.h" -#include "kmalloc.h" - -#include "asm/usermode.h" -#include "asm/x86.h" -#include "scheduler.h" -#include "kernel.h" -#include "fs/elf.h" - -#include <stddef.h> - -void userfunc() -{ - - // we need enable here again (since the pushed eflags have it disabled)! - x86_sti(); - - // if we are pid 0, replace ourselves with /bin/init and enter usermode - if(task_get_current_pid()==0) - { - uint32_t alloc; - uint32_t entry_global=load_elf(BIN_INIT,&alloc); - task_set_brk(alloc); - asm_usermode(entry_global); - } - - // kernel worker thread: SLEEPER - if(task_get_current_pid()==1) - { - while(1) - { - __asm__("hlt"); - } - } - - // kernel worker thread: SYSCALL CHECKER - if(task_get_current_pid()==2) - { - task_syscall_worker(); - } -} - - diff --git a/kernel/usermode.h b/kernel/usermode.h deleted file mode 100644 index e69de29..0000000 --- a/kernel/usermode.h +++ /dev/null |
