X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/5ea8e2ba737f903db81d49b56778e883634512a5..8efc0cf32160c68772a2ce1887e6a397852d3d96:/lunaix-os/includes/lunaix/ds/waitq.h?ds=sidebyside diff --git a/lunaix-os/includes/lunaix/ds/waitq.h b/lunaix-os/includes/lunaix/ds/waitq.h index dfeb7c3..219bf04 100644 --- a/lunaix-os/includes/lunaix/ds/waitq.h +++ b/lunaix-os/includes/lunaix/ds/waitq.h @@ -2,18 +2,25 @@ #define __LUNAIX_CODVAR_H #include +#include 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); +} + void pwait(waitq_t* queue); @@ -23,4 +30,9 @@ pwake_one(waitq_t* queue); void pwake_all(waitq_t* queue); +#define wait_if(cond) \ + while ((cond)) { \ + sched_yieldk(); \ + } + #endif /* __LUNAIX_CODVAR_H */