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 | */ |