From 6613d7e5f3c2e704a6812b0fbcaf79ade8d19980 Mon Sep 17 00:00:00 2001 From: dzwdz Date: Thu, 14 Apr 2022 22:11:36 +0200 Subject: kernel/proc: only change state through `process_transition` --- src/kernel/syscalls.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/kernel/syscalls.c') diff --git a/src/kernel/syscalls.c b/src/kernel/syscalls.c index 0a25a63..217fa77 100644 --- a/src/kernel/syscalls.c +++ b/src/kernel/syscalls.c @@ -16,7 +16,7 @@ _Noreturn void _syscall_exit(int ret) { int _syscall_await(void) { bool has_children = false; - process_current->state = PS_WAITS4CHILDDEATH; + process_transition(process_current, PS_WAITS4CHILDDEATH); // find any already dead children for (struct process *iter = process_current->child; @@ -28,7 +28,7 @@ int _syscall_await(void) { } if (!has_children) { - process_current->state = PS_RUNNING; + process_transition(process_current, PS_RUNNING); return ~0; // TODO errno } else { return -1; @@ -204,7 +204,7 @@ int _syscall_fs_wait(char __user *buf, int max_len, struct fs_wait_response __us struct vfs_backend *backend = process_current->controlled; if (!backend) return -1; - process_current->state = PS_WAITS4REQUEST; + process_transition(process_current, PS_WAITS4REQUEST); backend->handler = process_current; /* checking the validity of those pointers here would make * vfs_request_accept simpler. TODO? */ -- cgit v1.2.3