kernel: implement a generic object signalling system

This commit is contained in:
2026-03-12 20:40:23 +00:00
parent 921c91c02a
commit 2fb8f556b4
7 changed files with 151 additions and 3 deletions

View File

@@ -9,7 +9,7 @@ struct msg;
struct channel {
struct object c_base;
unsigned int c_id;
struct waitqueue c_wq;
unsigned int c_msg_waiting;
struct btree c_msg;
struct btree_node c_node;
};

View File

@@ -88,9 +88,11 @@ struct object {
koid_t ob_id;
struct object_type *ob_type;
spin_lock_t ob_lock;
uint32_t ob_signals;
unsigned int ob_refcount;
unsigned int ob_handles;
struct queue_entry ob_list;
struct waitqueue ob_wq;
} __aligned(sizeof(long));
extern kern_status_t object_bootstrap(void);
@@ -116,6 +118,13 @@ extern void object_unlock_pair_irqrestore(
struct object *b,
unsigned long flags);
extern void object_assert_signal(struct object *obj, uint32_t signals);
extern void object_clear_signal(struct object *obj, uint32_t signals);
extern void object_wait_signal(
struct object *obj,
uint32_t signals,
unsigned long *irq_flags);
#ifdef __cplusplus
}
#endif