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/timer.c | |
| 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/timer.c')
| -rw-r--r-- | src/timer.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/timer.c b/src/timer.c index 2607584..2d4ff01 100644 --- a/src/timer.c +++ b/src/timer.c @@ -21,6 +21,7 @@ #include <kmi/notify.h> #include <kmi/nodes.h> #include <kmi/utils.h> +#include <kmi/bkl.h> #include <kmi/timer.h> #include <kmi/debug.h> #include <arch/cpu.h> @@ -197,12 +198,16 @@ ticks_t nsecs_to_ticks(tunit_t nsecs) /* call to this function from exception handlers */ void handle_timer() { + bkl_lock(); struct timer *t = newest_timer(); remove_timer(t); struct tcb *r = get_tcb(t->tid); - if (!r) + if (!r) { + bkl_unlock(); return; + } notify(r, NOTIFY_TIMER); + bkl_unlock(); } |
