aboutsummaryrefslogtreecommitdiff
path: root/src/uapi
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2024-07-05 21:02:52 +0300
committerKimplul <kimi.h.kuparinen@gmail.com>2024-07-05 21:02:52 +0300
commit608f44306a6f0d5692f5c81bcbfe7a621ec254ba (patch)
tree72a9f917694be91e4795bd04fddabac8139e1059 /src/uapi
parentbef6a76b602eee8f43c2e7dd65c5bd9cf5d909e4 (diff)
downloadkmi-608f44306a6f0d5692f5c81bcbfe7a621ec254ba.tar.gz
kmi-608f44306a6f0d5692f5c81bcbfe7a621ec254ba.zip
implement bkl
+ Start out using big kernel lock, apparently seL4 thinks its good enough. I might have a go at using a more fair lock, and possibly moving to more fine-grained locks if I really feel the need to get scalability up.
Diffstat (limited to 'src/uapi')
-rw-r--r--src/uapi/ipc.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/uapi/ipc.c b/src/uapi/ipc.c
index 3c24f1c..613d4a9 100644
--- a/src/uapi/ipc.c
+++ b/src/uapi/ipc.c
@@ -9,6 +9,7 @@
#include <kmi/orphanage.h>
#include <kmi/debug.h>
#include <kmi/uapi.h>
+#include <kmi/bkl.h>
#include <kmi/tcb.h>
#include <kmi/ipi.h>
#include <kmi/irq.h>
@@ -171,6 +172,8 @@ static __noreturn void __run_notify(struct tcb *t, struct tcb *r)
finalize_rpc(t, r, s);
clear_bits(t->notify_flags, flags);
+
+ bkl_unlock();
ret_userspace_fast();
unreachable();
}
@@ -335,6 +338,7 @@ static void do_ipc(struct tcb *t,
/* I tested out passing the return values as arguments to
* ret_userspace_fast, but apparently that causes enough stack shuffling
* to be slower overall. */
+ bkl_unlock();
ret_userspace_fast();
}
/**