diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/config.h | 12 | ||||
| -rw-r--r-- | kernel/kernel.c | 50 | ||||
| -rw-r--r-- | kernel/syscalls.c | 2 | ||||
| -rw-r--r-- | kernel/task.c | 2 |
4 files changed, 27 insertions, 39 deletions
diff --git a/kernel/config.h b/kernel/config.h index e48c63c..fb68dec 100644 --- a/kernel/config.h +++ b/kernel/config.h @@ -4,11 +4,15 @@ * ********************************************/ -//#define FOOLOS_COMPILE_FLOPPY // compile floppy drivers -#define FOOLOS_CONSOLE_AUTOBREAK // add newline automatically at end of line -#define FOOLOS_LOG_OFF // do not log anything -#define FOOLOS_CONSOLE // otherwise VESA will be used! +#ifndef FOOLOS_CONFIG_H +#define FOOLOS_CONFIG_H + +#define FOOLOS_CONSOLE_AUTOBREAK // add newline automatically at end of line +#define FOOLOS_LOG_OFF // do not log anything +#define FOOLOS_CONSOLE // otherwise VESA will be used! #define MEM_PRINT_MEMORYMAP #define LOG_BUF_SIZE 4069 #define LOG_SYSCALLS +#endif + diff --git a/kernel/kernel.c b/kernel/kernel.c index f788cee..66ca21a 100644 --- a/kernel/kernel.c +++ b/kernel/kernel.c @@ -1,22 +1,17 @@ -/* - * in freestanding mode we can just use this c lib headers - * stdbool,sddef,stdint, - * float,iso646,limits,stdarg - */ +#define FOOLOS_MODULE_NAME "kernel" #ifdef __linux__ #error "Watchout! this is not Linux but FoolOS. Use a cross-compiler" #endif -#define FOOLOS_MODULE_NAME "kernel" +#include "config.h" #include <stdint.h> -#include "config.h" #include "asm/asm.h" #include "lib/logger/log.h" -#include "lib/bool/bool.h" + #include "lib/buffer/ringbuffer.h" #include "smp.h" @@ -37,17 +32,10 @@ #include "task.h" -// -// KERNEL MAIN -// +// mp informs us if this if this is the main processor void kernel_main(uint32_t initial_stack, int mp) { // - // Configuring the PIT timer. - // - timer_init(); - - // // Memory Init // // after this is set up we will be able to allocate and deallocate @@ -59,9 +47,14 @@ void kernel_main(uint32_t initial_stack, int mp) mem_init(0x7c00+1,*((uint16_t *)(0x7c00))); // + // Configuring the PIT timer. + // + timer_init(); + + // // Activate Virtual Memory (paging) // - //vmem_init(); + vmem_init(); // // init output to screen @@ -74,7 +67,7 @@ void kernel_main(uint32_t initial_stack, int mp) // - // Setup PIC + // Setup PIC (interrupts) // pic_setup(); @@ -110,6 +103,11 @@ void kernel_main(uint32_t initial_stack, int mp) // ringbuffer for stdin! ringbuffer_init(); + // load and run inode 15 (shell) + // we will come back into the kernel only on interrupts... + syscall_execve(15,0,0); + + // // Start the other Processors (also before paging for some reason!) // @@ -118,7 +116,6 @@ void kernel_main(uint32_t initial_stack, int mp) // but it will be copied over mbr - // // Scan the PCI Bus // @@ -128,30 +125,17 @@ void kernel_main(uint32_t initial_stack, int mp) //pci_init(); // - // Initialize Floppy Disk if activated in config.h - // Sadly we won't use it anyway so its uncommented anyway. - // - //#ifdef FOOLOS_COMPILE_FLOPPY - //floppy_init(); - //#endif - - // // Initialize Multitasking // // For now this starts three "tasks" which are scheduled // round robin style. // - syscall_execve(15,0,0); // run fool-shell! (execve needs inode id) //task_init(); - // - //vesa_init_doublebuff(); - - // Just hang around here, if its reached. // we do our tasks anyway. on the next clock tick. - while(1); + // while(1); } diff --git a/kernel/syscalls.c b/kernel/syscalls.c index 0e4ee66..401a5aa 100644 --- a/kernel/syscalls.c +++ b/kernel/syscalls.c @@ -344,7 +344,7 @@ int syscall_exit(int ret, int none1, int none2) log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"exit (ret=%d)", ret); #endif - static char *argv[]={"test",NULL}; + static char *argv[]={"shell","--silent",NULL}; syscall_execve(15,argv,0); // start shell } diff --git a/kernel/task.c b/kernel/task.c index ef25b05..df48afb 100644 --- a/kernel/task.c +++ b/kernel/task.c @@ -32,7 +32,7 @@ void task_test1() cc2=c2; cc3=c3; - log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"tasks progress: %d %dn", cc2, cc3); + log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"tasks progress: %d %d", cc2, cc3); asm("sti"); c1++; |
