From b518f39803eaaf0b25b95baf951b12ef4d5a727e Mon Sep 17 00:00:00 2001 From: Miguel Date: Mon, 1 Oct 2018 14:37:18 +0200 Subject: struggling with interrupts and scheduler --- kernel/interrupts.c | 14 +------------- kernel/kernel.c | 1 + kernel/kernel.h | 2 +- kernel/log.c | 4 ++-- kernel/scheduler.c | 6 ++++-- kernel/smp.c | 7 +++++++ kernel/vmem.c | 18 ++++++++++++++++-- 7 files changed, 32 insertions(+), 20 deletions(-) (limited to 'kernel') diff --git a/kernel/interrupts.c b/kernel/interrupts.c index 8bff84b..49c0191 100644 --- a/kernel/interrupts.c +++ b/kernel/interrupts.c @@ -64,9 +64,7 @@ void interrupt_register(uint32_t irq, uint32_t func_addr) */ uint32_t interrupt_handler(uint32_t esp, uint32_t irq) { - uint32_t cpu=smp_get(SMP_APIC_ID); uint32_t *stack; - static uint32_t timer=0; if(handlers[irq]!=0) { @@ -90,17 +88,7 @@ uint32_t interrupt_handler(uint32_t esp, uint32_t irq) case INTERRUPT_APIC_TIMER: // frequency is configured in smp.c (100hz) - - if(cpu==0) - { - timer++; - if(timer==10){ - compositor_swap_buffers(); - esp=scheduler_run(esp,-1); - timer=0; - } - } - + esp=scheduler_run(esp,-1); apic_eoi(); break; diff --git a/kernel/kernel.c b/kernel/kernel.c index 03dae1f..f55b948 100644 --- a/kernel/kernel.c +++ b/kernel/kernel.c @@ -159,5 +159,6 @@ void kernel_main(uint32_t eax,uint32_t ebx) } klog("Symmetric Multi Processing (SMP) start ... "); +// for(int i=1;i=VMEM_USER_FRAMEBUFFER&&virt=VMEM_USER_PROG&&virt=VMEM_USER_FRAMEBUFFER&&virt=VMEM_USER_FRAMEBUFFER&&virt=VMEM_USER_FRAMEBUFFER&&virt %x",virt,src_phys,dst_phys); @@ -427,6 +440,7 @@ pdirectory* vmem_new_space_dir(pdirectory *copy_dir,bool stack_only) x86_invlpg(VMEM_COPY_PAGE+4096); // refresh TLB memcpy(VMEM_COPY_PAGE+4096,VMEM_COPY_PAGE,4096); + } } } virt+=4096; -- cgit v1.2.3