From 558bf072fff36ae9f09e332cf8aa536db8ef17c0 Mon Sep 17 00:00:00 2001 From: Michal Idziorek Date: Sat, 30 Aug 2014 19:20:30 +0200 Subject: minor fixes --- README.md | 3 +-- bochsrc | 20 ++++++++++---------- kernel/kernel.c | 6 +++--- kernel/task.c | 5 +++++ 4 files changed, 19 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index a804af2..13cfb16 100644 --- a/README.md +++ b/README.md @@ -51,11 +51,10 @@ Some things I would like to add someday: * Filesystem (probably FAT) * e1000 driver * networking stack / webserver -* virtual memory managment / paging * user space / ELF binaries support -* multitasking * mouse * simple window manager +* support multiple processors! Issues ------ diff --git a/bochsrc b/bochsrc index 94f0f4a..ceb79ee 100644 --- a/bochsrc +++ b/bochsrc @@ -54,7 +54,7 @@ #display_library: wx #display_library: x, options="hideIPS" # disable IPS output in status bar #display_library: x, options="gui_debug" # use GTK debugger gui -#display_library: x +display_library: x #======================================================================= @@ -128,7 +128,7 @@ romimage: file=/home/miguel/opt/bochs-2.6.6/bios/BIOS-bochs-latest # 2.2.6 2.1Ghz Athlon XP with Linux 2.6/g++ 3.4 12 to 15 Mips # 2.0.1 1.6Ghz Intel P4 with Win2000/g++ 3.3 5 to 7 Mips #======================================================================= -#cpu: count=1, ips=5000000, reset_on_triple_fault=1, ignore_bad_msrs=1, msrs="msrs.def" +cpu: count=1, ips=1000000 #, reset_on_triple_fault=1, ignore_bad_msrs=1, msrs="msrs.def" #======================================================================= # CPUID: @@ -220,7 +220,7 @@ romimage: file=/home/miguel/opt/bochs-2.6.6/bios/BIOS-bochs-latest # used all allocated host memory and wants more. # #======================================================================= -memory: guest=16, host=1024 +#memory: guest=16, host=1024 #======================================================================= # OPTROMIMAGE[1-4]: @@ -327,10 +327,10 @@ floppya: 1_44=./FoolOS.img, status=inserted # ata2: enabled=1, ioaddr1=0x1e8, ioaddr2=0x3e0, irq=11 # ata3: enabled=1, ioaddr1=0x168, ioaddr2=0x360, irq=9 #======================================================================= -ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14 -ata1: enabled=1, ioaddr1=0x170, ioaddr2=0x370, irq=15 -ata2: enabled=0, ioaddr1=0x1e8, ioaddr2=0x3e0, irq=11 -ata3: enabled=0, ioaddr1=0x168, ioaddr2=0x360, irq=9 +#ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14 +#ata1: enabled=1, ioaddr1=0x170, ioaddr2=0x370, irq=15 +#ata2: enabled=0, ioaddr1=0x1e8, ioaddr2=0x3e0, irq=11 +#ata3: enabled=0, ioaddr1=0x168, ioaddr2=0x360, irq=9 #======================================================================= # ATA[0-3]-MASTER, ATA[0-3]-SLAVE @@ -438,7 +438,7 @@ boot: floppy # # Default value are sync=none, time0=local #======================================================================= -#clock: sync=none, time0=local +clock: sync=realtime, time0=local #======================================================================= @@ -449,7 +449,7 @@ boot: floppy # floppy_bootsig_check: disabled=0 # floppy_bootsig_check: disabled=1 #======================================================================= -floppy_bootsig_check: disabled=0 +#floppy_bootsig_check: disabled=0 #======================================================================= # LOG: @@ -463,7 +463,7 @@ floppy_bootsig_check: disabled=0 # log: /dev/tty #======================================================================= #log: /dev/stdout -log: ./bochs.log +#log: ./bochs.log #======================================================================= # LOGPREFIX: diff --git a/kernel/kernel.c b/kernel/kernel.c index eee66d7..9e8108f 100644 --- a/kernel/kernel.c +++ b/kernel/kernel.c @@ -158,9 +158,6 @@ void kernel_main(uint32_t initial_stack) int_install_ir(17, 0b10001110, 0x08,&int_irq17); int_install_ir(18, 0b10001110, 0x08,&int_irq18); - // multitasking - task_init(); - // now we can enable interrupts back again int_enable(); @@ -175,6 +172,9 @@ void kernel_main(uint32_t initial_stack) //init shell shell_init(); + + // multitasking + task_init(); /* log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"test mem"); diff --git a/kernel/task.c b/kernel/task.c index fb71640..8884079 100644 --- a/kernel/task.c +++ b/kernel/task.c @@ -5,6 +5,8 @@ #include "../lib/logger/log.h" // logger facilities #define FOOLOS_MODULE_NAME "task" +int started; + void task_test1() { uint8_t c1; @@ -88,6 +90,8 @@ void task_create(int pid,void(*thread)()) uint32_t task_switch_next(uint32_t oldesp) { + + if(started!=0xabcde) return oldesp; if(CurrentTask != -1){ //Were we even running a task? @@ -119,6 +123,7 @@ void stack_trace(uint32_t *stack,int size) void task_init() { + started=0xabcde; log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"init multitasking."); task_create(0,task_test1); task_create(1,task_test2); -- cgit v1.2.3