30 lines
691 B
C
30 lines
691 B
C
//
|
|
// Created by rick on 24-02-21.
|
|
//
|
|
|
|
#include "syscall_handler.h"
|
|
#include <libk/syscall.h>
|
|
#include <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;
|
|
}
|
|
}
|