summaryrefslogtreecommitdiffstats
path: root/sys/syscall_pcb.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/syscall_pcb.c')
-rw-r--r--sys/syscall_pcb.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/sys/syscall_pcb.c b/sys/syscall_pcb.c
index b77be95..a37e4bb 100644
--- a/sys/syscall_pcb.c
+++ b/sys/syscall_pcb.c
@@ -1,14 +1,21 @@
#include "api/error.h"
+#include "jove.h"
#include "lib/printf.h"
+#include "proc/process.h"
+#include "proc/scheduler.h"
#include "syscall.h"
+#include "errno.h"
int
s_syscall_pcb_yield(jove_owned_obj_t *pcb_obj,
size_t bytes_left,
void *payload_data)
{
- kprintf("%s: Stub!\n", __func__);
- return 0;
+ size_t bytes_needed = sizeof(pid_t);
+ CHECK_TOOSMALL(bytes_needed, bytes_left, "Message too small for payload");
+
+ pid_t subject_pid = *((pid_t*)payload_data);
+ return scheduler_yield(subject_pid);
}
int