Rev 2085 | Rev 2106 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 2085 | Rev 2089 | ||
|---|---|---|---|
| Line 34... | Line 34... | ||
| 34 | 34 | ||
| 35 | #ifndef KERN_WAITQ_H_ |
35 | #ifndef KERN_WAITQ_H_ |
| 36 | #define KERN_WAITQ_H_ |
36 | #define KERN_WAITQ_H_ |
| 37 | 37 | ||
| 38 | #include <arch/types.h> |
38 | #include <arch/types.h> |
| 39 | #include <typedefs.h> |
- | |
| 40 | #include <synch/spinlock.h> |
39 | #include <synch/spinlock.h> |
| 41 | #include <synch/synch.h> |
40 | #include <synch/synch.h> |
| 42 | #include <adt/list.h> |
41 | #include <adt/list.h> |
| 43 | 42 | ||
| 44 | #define WAKEUP_FIRST 0 |
43 | #define WAKEUP_FIRST 0 |
| Line 56... | Line 55... | ||
| 56 | int missed_wakeups; /**< Number of waitq_wakeup() calls that didn't find a thread to wake up. */ |
55 | int missed_wakeups; /**< Number of waitq_wakeup() calls that didn't find a thread to wake up. */ |
| 57 | link_t head; /**< List of sleeping threads for wich there was no missed_wakeup. */ |
56 | link_t head; /**< List of sleeping threads for wich there was no missed_wakeup. */ |
| 58 | } waitq_t; |
57 | } waitq_t; |
| 59 | 58 | ||
| 60 | #define waitq_sleep(wq) \ |
59 | #define waitq_sleep(wq) \ |
| 61 | waitq_sleep_timeout((wq),SYNCH_NO_TIMEOUT,SYNCH_FLAGS_NONE) |
60 | waitq_sleep_timeout((wq), SYNCH_NO_TIMEOUT, SYNCH_FLAGS_NONE) |
| 62 | 61 | ||
| 63 | extern void waitq_initialize(waitq_t *wq); |
62 | extern void waitq_initialize(waitq_t *wq); |
| 64 | extern int waitq_sleep_timeout(waitq_t *wq, uint32_t usec, int flags); |
63 | extern int waitq_sleep_timeout(waitq_t *wq, uint32_t usec, int flags); |
| 65 | extern ipl_t waitq_sleep_prepare(waitq_t *wq); |
64 | extern ipl_t waitq_sleep_prepare(waitq_t *wq); |
| 66 | extern int waitq_sleep_timeout_unsafe(waitq_t *wq, uint32_t usec, int flags); |
65 | extern int waitq_sleep_timeout_unsafe(waitq_t *wq, uint32_t usec, int flags); |
| 67 | extern void waitq_sleep_finish(waitq_t *wq, int rc, ipl_t ipl); |
66 | extern void waitq_sleep_finish(waitq_t *wq, int rc, ipl_t ipl); |
| 68 | extern void waitq_wakeup(waitq_t *wq, bool all); |
67 | extern void waitq_wakeup(waitq_t *wq, bool all); |
| 69 | extern void _waitq_wakeup_unsafe(waitq_t *wq, bool all); |
68 | extern void _waitq_wakeup_unsafe(waitq_t *wq, bool all); |
| 70 | extern void waitq_interrupt_sleep(thread_t *t); |
- | |
| 71 | 69 | ||
| 72 | #endif |
70 | #endif |
| 73 | 71 | ||
| 74 | /** @} |
72 | /** @} |
| 75 | */ |
73 | */ |