diff options
| author | Kimplul <kimi.h.kuparinen@gmail.com> | 2024-07-05 21:02:52 +0300 |
|---|---|---|
| committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2024-07-05 21:02:52 +0300 |
| commit | 608f44306a6f0d5692f5c81bcbfe7a621ec254ba (patch) | |
| tree | 72a9f917694be91e4795bd04fddabac8139e1059 /src/uapi | |
| parent | bef6a76b602eee8f43c2e7dd65c5bd9cf5d909e4 (diff) | |
| download | kmi-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.c | 4 |
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(); } /** |
