X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/5ea8e2ba737f903db81d49b56778e883634512a5..a2e1b06:/lunaix-os/includes/lunaix/ds/waitq.h diff --git a/lunaix-os/includes/lunaix/ds/waitq.h b/lunaix-os/includes/lunaix/ds/waitq.h index dfeb7c3..4469e1c 100644 --- a/lunaix-os/includes/lunaix/ds/waitq.h +++ b/lunaix-os/includes/lunaix/ds/waitq.h @@ -8,15 +8,39 @@ typedef struct waitq struct llist_header waiters; } waitq_t; -inline void +static inline void waitq_init(waitq_t* waitq) { llist_init_head(&waitq->waiters); } +static inline int +waitq_empty(waitq_t* waitq) +{ + return llist_empty(&waitq->waiters); +} + +static inline void +waitq_cancel_wait(waitq_t* waitq) +{ + llist_delete(&waitq->waiters); +} + +void +prepare_to_wait(waitq_t* waitq); + +void +try_wait(); + +void +try_wait_check_stall(); + void pwait(waitq_t* queue); +void +pwait_check_stall(waitq_t* queue); + void pwake_one(waitq_t* queue);