summaryrefslogtreecommitdiff
path: root/viengoos/object.h
diff options
context:
space:
mode:
Diffstat (limited to 'viengoos/object.h')
-rw-r--r--viengoos/object.h57
1 files changed, 32 insertions, 25 deletions
diff --git a/viengoos/object.h b/viengoos/object.h
index 077bd7e..47f36b2 100644
--- a/viengoos/object.h
+++ b/viengoos/object.h
@@ -536,56 +536,63 @@ extern void folio_policy (struct activity *activity,
struct folio_policy *out);
/* Return the first waiter queued on object OBJECT. */
-extern struct thread *object_wait_queue_head (struct activity *activity,
- struct object *object);
+extern struct messenger *object_wait_queue_head (struct activity *activity,
+ struct object *object);
/* Return the last waiter queued on object OBJECT. */
-extern struct thread *object_wait_queue_tail (struct activity *activity,
- struct object *object);
+extern struct messenger *object_wait_queue_tail (struct activity *activity,
+ struct object *object);
-/* Return the waiter following THREAD. */
-extern struct thread *object_wait_queue_next (struct activity *activity,
- struct thread *thread);
+/* Return the waiter following MESSENGER. */
+extern struct messenger *object_wait_queue_next (struct activity *activity,
+ struct messenger *messenger);
-/* Return the waiter preceding THREAD. */
-extern struct thread *object_wait_queue_prev (struct activity *activity,
- struct thread *thread);
+/* Return the waiter preceding MESSENGER. */
+extern struct messenger *object_wait_queue_prev (struct activity *activity,
+ struct messenger *messenger);
-/* Enqueue thread on object OBJECT's wait queue. */
+/* Push the messenger MESSENGER onto object OBJECT's wait queue (i.e.,
+ add it to the front of the wait queue). */
+extern void object_wait_queue_push (struct activity *activity,
+ struct object *object,
+ struct messenger *messenger);
+
+/* Enqueue the messenger MESSENGER on object OBJECT's wait queue
+ (i.e., add it to the end of the wait queue). */
extern void object_wait_queue_enqueue (struct activity *activity,
struct object *object,
- struct thread *thread);
+ struct messenger *messenger);
-/* Dequeue thread THREAD from its wait queue. */
-extern void object_wait_queue_dequeue (struct activity *activity,
- struct thread *thread);
+/* Unlink messenger MESSENGER from its wait queue. */
+extern void object_wait_queue_unlink (struct activity *activity,
+ struct messenger *messenger);
-/* Iterate over each thread waiting on the object at IDX in FOLIO. It
+/* Iterate over each messenger waiting on the object at IDX in FOLIO. It
is safe to call object_wait_queue_dequeue. */
#define folio_object_wait_queue_for_each(__owqfe_activity, \
__owqfe_folio, __owqfe_idx, \
- __owqfe_thread) \
- for (struct thread *__owqfe_next \
- = (struct thread *) \
+ __owqfe_messenger) \
+ for (struct messenger *__owqfe_next \
+ = (struct messenger *) \
(folio_object_wait_queue_p (__owqfe_folio, __owqfe_idx) \
? object_find (__owqfe_activity, \
folio_object_wait_queue (__owqfe_folio, \
__owqfe_idx), \
OBJECT_POLICY_VOID) \
: NULL); \
- (__owqfe_thread = __owqfe_next) \
+ (__owqfe_messenger = __owqfe_next) \
&& ((__owqfe_next = object_wait_queue_next (__owqfe_activity, \
- __owqfe_thread)) \
+ __owqfe_messenger)) \
|| 1); /* do nothing. */)
#define object_wait_queue_for_each(__owqfe_activity, __owqfe_object, \
- __owqfe_thread) \
- for (struct thread *__owqfe_next \
+ __owqfe_messenger) \
+ for (struct messenger *__owqfe_next \
= object_wait_queue_head (__owqfe_activity, __owqfe_object); \
- (__owqfe_thread = __owqfe_next) \
+ (__owqfe_messenger = __owqfe_next) \
&& ((__owqfe_next = object_wait_queue_next (__owqfe_activity, \
- __owqfe_thread)) \
+ __owqfe_messenger)) \
|| 1); /* do nothing. */)
#endif