diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2023-08-12 13:30:47 +0200 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2023-08-12 23:29:30 +0200 |
commit | deb2b637605bf0beedb55ed5483f55af09ab41e9 (patch) | |
tree | ebe34978e45ed1c4928eb13a8132c926af304ea8 /kern/sched.h | |
parent | 5879781c77ac5ed903b3712aef546848681b449d (diff) | |
download | gnumach-deb2b637605bf0beedb55ed5483f55af09ab41e9.tar.gz gnumach-deb2b637605bf0beedb55ed5483f55af09ab41e9.tar.bz2 gnumach-deb2b637605bf0beedb55ed5483f55af09ab41e9.zip |
sched: Add runq_lock helpers which check they are called at spl7
Diffstat (limited to 'kern/sched.h')
-rw-r--r-- | kern/sched.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/kern/sched.h b/kern/sched.h index 07d27ff5..35747f19 100644 --- a/kern/sched.h +++ b/kern/sched.h @@ -74,6 +74,21 @@ struct run_queue { typedef struct run_queue *run_queue_t; #define RUN_QUEUE_NULL ((run_queue_t) 0) +/* Shall be taken at splsched only */ +#ifdef MACH_LDEBUG +#define runq_lock(rq) do { \ + assert(splsched() == SPL7); \ + simple_lock_nocheck(&(rq)->lock); \ +} while (0) +#define runq_unlock(rq) do { \ + assert(splsched() == SPL7); \ + simple_unlock_nocheck(&(rq)->lock); \ +} while (0) +#else +#define runq_lock(rq) simple_lock_nocheck(&(rq)->lock) +#define runq_unlock(rq) simple_unlock_nocheck(&(rq)->lock) +#endif + #if MACH_FIXPRI /* * NOTE: For fixed priority threads, first_quantum indicates |