git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
move gic to new devtree interface
[lunaix-os.git]
/
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 219bf049d0340e96505cce52d715bb7befd50936..4469e1ca5689d2cc7441fd32a262d9f426c97431 100644
(file)
--- a/
lunaix-os/includes/lunaix/ds/waitq.h
+++ b/
lunaix-os/includes/lunaix/ds/waitq.h
@@
-2,7
+2,6
@@
#define __LUNAIX_CODVAR_H
#include <lunaix/ds/llist.h>
#define __LUNAIX_CODVAR_H
#include <lunaix/ds/llist.h>
-#include <lunaix/sched.h>
typedef struct waitq
{
typedef struct waitq
{
@@
-21,18
+20,31
@@
waitq_empty(waitq_t* waitq)
return llist_empty(&waitq->waiters);
}
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(waitq_t* queue);
+void
+pwait_check_stall(waitq_t* queue);
+
void
pwake_one(waitq_t* queue);
void
pwake_all(waitq_t* queue);
void
pwake_one(waitq_t* queue);
void
pwake_all(waitq_t* queue);
-#define wait_if(cond) \
- while ((cond)) { \
- sched_yieldk(); \
- }
-
#endif /* __LUNAIX_CODVAR_H */
#endif /* __LUNAIX_CODVAR_H */