30 lines
710 B
C
30 lines
710 B
C
//
|
|
// Created by rick on 24-02-21.
|
|
//
|
|
|
|
#include <myke/cpu/syscall_handler.h>
|
|
#include <myke/libk/syscall.h>
|
|
#include <myke/tasks/task.h>
|
|
|
|
void syscall_handle(isr_registers_t *registers) {
|
|
switch (registers->eax) {
|
|
case SYSCALL_START_SCHEDULER:
|
|
task_start_first();
|
|
break;
|
|
case SYSCALL_YIELD_JOB:
|
|
task_ensure_enabled();
|
|
task_switch_next();
|
|
break;
|
|
case SYSCALL_YIELD_IRQ:
|
|
task_ensure_enabled();
|
|
task_wait_irq(registers->ebx);
|
|
break;
|
|
case SYSCALL_SUSPEND:
|
|
task_ensure_enabled();
|
|
task_suspend();
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|