aboutsummaryrefslogtreecommitdiff
path: root/kern/sched.h
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2023-08-12 13:30:47 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2023-08-12 23:29:30 +0200
commitdeb2b637605bf0beedb55ed5483f55af09ab41e9 (patch)
treeebe34978e45ed1c4928eb13a8132c926af304ea8 /kern/sched.h
parent5879781c77ac5ed903b3712aef546848681b449d (diff)
downloadgnumach-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.h15
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