diff options
| author | Kimplul <kimi.h.kuparinen@gmail.com> | 2024-07-02 21:40:10 +0300 |
|---|---|---|
| committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2024-07-02 21:40:10 +0300 |
| commit | 8a3452098267e1af127d6c4f1836a9d82cd23f38 (patch) | |
| tree | c9fad842a8903f64a57027b66ef54bba0dee2928 /src/uapi/proc.c | |
| parent | 7ad9c01dad7b1b46eced8290b8b991383d648188 (diff) | |
| download | kmi-8a3452098267e1af127d6c4f1836a9d82cd23f38.tar.gz kmi-8a3452098267e1af127d6c4f1836a9d82cd23f38.zip | |
more complete interrupt handling outline
+ Still largely untested, should really try to come up with a proper
testsuite, at the moment it's mostly me trying things out in the (as
of yet unreleased) kmx repo
Diffstat (limited to 'src/uapi/proc.c')
| -rw-r--r-- | src/uapi/proc.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/uapi/proc.c b/src/uapi/proc.c index 153b183..e87a2ec 100644 --- a/src/uapi/proc.c +++ b/src/uapi/proc.c @@ -10,6 +10,7 @@ #include <kmi/uapi.h> #include <kmi/proc.h> #include <kmi/bits.h> +#include <kmi/notify.h> #include <kmi/mem_regions.h> /** @@ -186,6 +187,14 @@ SYSCALL_DEFINE1(swap)(struct tcb *t, sys_arg_t tid){ /* set return value for current thread */ set_args1(t, OK); + /* not running anymore lol */ + if (t->notify_state == NOTIFY_RUNNING) + t->notify_state = NOTIFY_WAITING; + + /* handle possible queued notification */ + if (s->notify_state == NOTIFY_QUEUED) + notify(s, 0); + /* get register state for new thread */ return_args(s, get_args(s)); } |
