diff options
| author | Loic Guegan <manzerbredes@mailbox.org> | 2021-05-04 15:30:24 +0200 |
|---|---|---|
| committer | Loic Guegan <manzerbredes@mailbox.org> | 2021-05-04 15:30:24 +0200 |
| commit | 1530a85d5aefcf6497ff2129023e9a0b002603dd (patch) | |
| tree | ea6098d0dcafabba0ffc2f28ea5c136f731996b9 /src/boucane.cc | |
| parent | 64a17f3e0683a0a492a3fed9c4c17a4335d1f421 (diff) | |
Solving many issues: Aligning kernel stack, improve syscall mechanism,
DISABLING RED-ZONE !!!!
Diffstat (limited to 'src/boucane.cc')
| -rw-r--r-- | src/boucane.cc | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/src/boucane.cc b/src/boucane.cc index 78884ac..ee7691d 100644 --- a/src/boucane.cc +++ b/src/boucane.cc @@ -12,6 +12,9 @@ #include "drivers/bmp.hpp" #include "core/scheduler.hpp" +/// @brief Temporary +#define TASK_DELAY 10000000 + u64 kvar_kernel_vma; u64 kvar_stack_pma; u64 kvar_userspace_pma; @@ -58,18 +61,25 @@ void configure_tss(){ void task1(){ while(1){ - asm("mov $0xABC, %rax"); asm("mov $1, %rdi;int $0x30"); + for(u32 delay=0;delay<=TASK_DELAY;delay++){} } } - void task2(){ while(1){ - asm("mov $0xAEBC, %rax"); asm("mov $2, %rdi;int $0x30"); + for(u32 delay=0;delay<=TASK_DELAY;delay++){} + } +} + +void task3(){ + while(1){ + asm("mov $3, %rdi;int $0x30"); + for(u32 delay=0;delay<=TASK_DELAY;delay++){} } } + extern "C" void boucane(u64 mb_info){ // Init linker variables asm volatile ("movq $__kernel_vma, %0":"=m"(kvar_kernel_vma)); @@ -89,7 +99,7 @@ extern "C" void boucane(u64 mb_info){ memtext_init(); idt_enable_interrupt(); apic_enable(); - + // Looking for framebuffer FRAMEBUFFER fb_info; if(mb2_find_framebuffer((u32*)mb_info, &fb_info)){ @@ -109,25 +119,26 @@ extern "C" void boucane(u64 mb_info){ __putchar=vgatext_putchar; } } - + // Booting! printk("Booting Boucane v%d.%d.%d\n",VERSION_MAJOR,VERSION_MINOR, VERSION_PATH); printk("System informations -- "); char bootloader[20]; if(mb2_find_bootloader_name((u32*)mb_info,bootloader)){ - printk("BOOT:%s ", bootloader); } - MEM_INFO mem_infos; if(mb2_find_mem((u32*)mb_info,&mem_infos)){ u64 mem=mem_infos.mem_upper-mem_infos.mem_lower; mem/=1024; printk("RAM:%dMB\n", mem); } - //show_ticks=1; - create_task((void*)task1, 50); - create_task((void*)task2, 50); + + + printk("Launching processes... "); + create_task((void*)task1, 100); + create_task((void*)task2, 100); + create_task((void*)task3, 100); scheduler_start(); while(1); }
\ No newline at end of file |
