sched: Implement basic scheduling and signal handling system
Note: this is probably 25% broken, but it works right now as written, so I hope it all works. - Added a new scheduler header file (scheduler.h) defining task structures, scheduling policies, and signal handling mechanisms. - Integrated scheduling functions into the syscall interface, including SYS_GETPID, SYS_GETPPID, SYS_EXIT, SYS_SCHED_YIELD, SYS_NICE, SYS_KILL, SYS_SIGACTION, SYS_SIGPROCMASK, SYS_SCHED_GETSCHEDULER, and SYS_SCHED_SETSCHEDULER. - Updated syscall handler to manage new scheduling-related syscalls and signal actions. Signed-off-by: kaguya <vpshinomiya@protonmail.com>
This commit is contained in:
+14
-4
@@ -4,16 +4,26 @@
|
||||
#define SYS_WRITE 1
|
||||
#define SYS_OPEN 2
|
||||
#define SYS_CLOSE 3
|
||||
#define SYS_SCHED_YIELD 24
|
||||
|
||||
static inline long syscall(long num, long a1, long a2, long a3)
|
||||
static inline long syscall(long num,
|
||||
unsigned long a1,
|
||||
unsigned long a2,
|
||||
unsigned long a3,
|
||||
unsigned long a4,
|
||||
unsigned long a5,
|
||||
unsigned long a6)
|
||||
{
|
||||
long ret;
|
||||
|
||||
asm volatile (
|
||||
"mov %4, %%r10\n"
|
||||
"mov %5, %%r8\n"
|
||||
"mov %6, %%r9\n"
|
||||
"syscall"
|
||||
: "=a"(ret)
|
||||
: "a"(num), "D"(a1), "S"(a2), "d"(a3)
|
||||
: "a"(num), "D"(a1), "S"(a2), "d"(a3),
|
||||
"r"(a4), "r"(a5), "r"(a6)
|
||||
: "r10", "r8", "r9", "rcx", "r11", "memory"
|
||||
);
|
||||
|
||||
return ret;
|
||||
}
|
||||
Reference in New Issue
Block a user