summaryrefslogtreecommitdiff
path: root/kern/queue.h
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2025-02-12 02:09:44 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2025-02-12 02:11:11 +0100
commit00e36dabb4cdef51095aece46e451f2fab4c13c1 (patch)
tree20b24b481b496abc40bd901a5a69b0c3ed4efefd /kern/queue.h
parentc72c74b8544763f536566d3004a2cc957f1b1937 (diff)
Use MACRO_BEGIN/END
This notably fixes at least a SAVE_HINT call.
Diffstat (limited to 'kern/queue.h')
-rw-r--r--kern/queue.h36
1 files changed, 20 insertions, 16 deletions
diff --git a/kern/queue.h b/kern/queue.h
index f0b4002f..b2cd3073 100644
--- a/kern/queue.h
+++ b/kern/queue.h
@@ -187,7 +187,7 @@ void insque(queue_entry_t, queue_entry_t);
* <field> is the chain field in (*<type>)
*/
#define queue_enter(head, elt, type, field) \
-{ \
+MACRO_BEGIN \
queue_assert(head); \
queue_assert(&(elt)->field); \
queue_entry_t prev; \
@@ -202,7 +202,7 @@ void insque(queue_entry_t, queue_entry_t);
(elt)->field.prev = prev; \
(elt)->field.next = head; \
(head)->prev = (queue_entry_t) elt; \
-}
+MACRO_END
/*
* Macro: queue_enter_first
@@ -216,7 +216,7 @@ void insque(queue_entry_t, queue_entry_t);
* <field> is the chain field in (*<type>)
*/
#define queue_enter_first(head, elt, type, field) \
-{ \
+MACRO_BEGIN \
queue_assert(head); \
queue_assert(&(elt)->field); \
queue_entry_t next; \
@@ -231,7 +231,7 @@ void insque(queue_entry_t, queue_entry_t);
(elt)->field.next = next; \
(elt)->field.prev = head; \
(head)->next = (queue_entry_t) elt; \
-}
+MACRO_END
/*
* Macro: queue_field [internal use only]
@@ -251,7 +251,7 @@ void insque(queue_entry_t, queue_entry_t);
* arguments as in queue_enter
*/
#define queue_remove(head, elt, type, field) \
-{ \
+MACRO_BEGIN \
queue_assert(head); \
queue_assert(&(elt)->field); \
queue_entry_t next, prev; \
@@ -268,7 +268,7 @@ void insque(queue_entry_t, queue_entry_t);
(head)->next = next; \
else \
((type)prev)->field.next = next; \
-}
+MACRO_END
/*
* Macro: queue_remove_first
@@ -280,7 +280,7 @@ void insque(queue_entry_t, queue_entry_t);
* entry is returned by reference
*/
#define queue_remove_first(head, entry, type, field) \
-{ \
+MACRO_BEGIN \
queue_assert(head); \
queue_assert(&(entry)->field); \
queue_entry_t next; \
@@ -293,7 +293,7 @@ void insque(queue_entry_t, queue_entry_t);
else \
((type)(next))->field.prev = (head); \
(head)->next = next; \
-}
+MACRO_END
/*
* Macro: queue_remove_last
@@ -305,7 +305,7 @@ void insque(queue_entry_t, queue_entry_t);
* entry is returned by reference
*/
#define queue_remove_last(head, entry, type, field) \
-{ \
+MACRO_BEGIN \
queue_assert(head); \
queue_assert(&(entry)->field); \
queue_entry_t prev; \
@@ -318,19 +318,19 @@ void insque(queue_entry_t, queue_entry_t);
else \
((type)(prev))->field.next = (head); \
(head)->prev = prev; \
-}
+MACRO_END
/*
* Macro: queue_assign
*/
#define queue_assign(to, from, type, field) \
-{ \
+MACRO_BEGIN \
queue_assert(&(to)->field); \
queue_assert(&(from)->field); \
((type)((from)->prev))->field.next = (to); \
((type)((from)->next))->field.prev = (to); \
*to = *from; \
-}
+MACRO_END
/*
* Macro: queue_iterate
@@ -366,23 +366,27 @@ typedef struct mpqueue_head mpqueue_head_t;
#define round_mpq(size) (size)
#define mpqueue_init(q) \
- { \
+ MACRO_BEGIN \
queue_init(&(q)->head); \
simple_lock_init(&(q)->lock); \
- }
+ MACRO_END
#define mpenqueue_tail(q, elt) \
+ MACRO_BEGIN \
simple_lock(&(q)->lock); \
enqueue_tail(&(q)->head, elt); \
- simple_unlock(&(q)->lock);
+ simple_unlock(&(q)->lock); \
+ MACRO_END
#define mpdequeue_head(q, elt) \
+ MACRO_BEGIN \
simple_lock(&(q)->lock); \
if (queue_empty(&(q)->head)) \
*(elt) = 0; \
else \
*(elt) = dequeue_head(&(q)->head); \
- simple_unlock(&(q)->lock);
+ simple_unlock(&(q)->lock); \
+ MACRO_END
/*
* Old queue stuff, will go away soon.