From 100be313c22bd6116b1adc5eb30f5db56f4b0772 Mon Sep 17 00:00:00 2001 From: Michal Idziorek Date: Mon, 1 Dec 2014 14:07:50 +0100 Subject: fuck reentrant clib, we are linking static anyway --- README.md | 1 - asm/int_clock_handler.asm | 2 +- asm/int_kb_handler.asm | 1 + kernel/vmem.c | 5 +++-- userspace/task1.c | 7 +++++-- userspace/task2.c | 5 ++++- 6 files changed, 14 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 14e87c6..b73eb87 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,6 @@ Todos ----- * Allow GRUB as alternative bootloader (multiboot spec/ grub-mkrescue) -* Begin to worry about reentrancy of clib! * Support some TTY standard * Real User space * /dev/console diff --git a/asm/int_clock_handler.asm b/asm/int_clock_handler.asm index bcd45da..627e432 100644 --- a/asm/int_clock_handler.asm +++ b/asm/int_clock_handler.asm @@ -20,7 +20,7 @@ int_clock_handler: pusha ;Push all standard registers mov eax, esp - mov esp,0x1000 + mov esp,0x1000 ;put the stack outside of virtual memory in kernel space! push eax ;Push pointer to all the stuff we just pushed call task_switch_next ;Call C code diff --git a/asm/int_kb_handler.asm b/asm/int_kb_handler.asm index f2e33bf..acf6208 100644 --- a/asm/int_kb_handler.asm +++ b/asm/int_kb_handler.asm @@ -5,6 +5,7 @@ global int_kb_handler [bits 32] int_kb_handler: + cli pusha diff --git a/kernel/vmem.c b/kernel/vmem.c index 3079733..53e33c4 100644 --- a/kernel/vmem.c +++ b/kernel/vmem.c @@ -339,11 +339,11 @@ int vmem_new_space_dir() void vmem_set_dir(int dir) { - x86_paging_disable(); +// x86_paging_disable(); x86_set_pdbr(page_dirs[dir]); // log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"set pagedir to %d (0x%08X)",dir,page_dirs[dir]); current_dir=dir; - x86_paging_enable(); +// x86_paging_enable(); } @@ -353,6 +353,7 @@ void vmem_init() //log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"init paging (vesa base: 0x%08x)",vesa_physbase); log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"init paging"); vmem_set_dir(vmem_new_space_dir()); + x86_paging_enable(); } diff --git a/userspace/task1.c b/userspace/task1.c index ed686c4..d3706ee 100644 --- a/userspace/task1.c +++ b/userspace/task1.c @@ -1,8 +1,11 @@ -int main(int argc, char **argv) +int main(int argc, char **argv) { + signed int i=0; + while(1) { - write(1,"task 1 \n",8); + i++; + printf("task 1 : %i \n",i); } return 0; diff --git a/userspace/task2.c b/userspace/task2.c index f1164d7..e529921 100644 --- a/userspace/task2.c +++ b/userspace/task2.c @@ -1,8 +1,11 @@ int main(int argc, char **argv) { + signed int i=0; + while(1) { - write(1,"task 2 \n",8); + i++; + printf("task 2 : %i \n",i); } return 0; -- cgit v1.2.3