Changes in kernel/generic/include/synch/waitq.h [111b9b9:d314571] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/include/synch/waitq.h
r111b9b9 rd314571 41 41 #include <adt/list.h> 42 42 43 typedef enum { 44 WAKEUP_FIRST = 0, 45 WAKEUP_ALL 46 } wakeup_mode_t; 47 43 48 /** Wait queue structure. 44 49 * … … 52 57 53 58 /** 54 * If negative, number of wakeups that are to be ignored (necessary for futex operation).55 * If positive, number of wakeups that weren't able to wake a thread.59 * Number of waitq_wakeup() calls that didn't find a thread to wake up. 60 * 56 61 */ 57 int wakeup_balance; 62 int missed_wakeups; 63 64 /** Number of wakeups that need to be ignored due to futex timeout. */ 65 int ignore_wakeups; 58 66 59 67 /** List of sleeping threads for which there was no missed_wakeup. */ 60 68 list_t sleepers; 61 62 bool closed;63 69 } waitq_t; 64 70 65 typedef struct wait_guard { 66 ipl_t ipl; 67 } wait_guard_t; 71 #define waitq_sleep(wq) \ 72 waitq_sleep_timeout((wq), SYNCH_NO_TIMEOUT, SYNCH_FLAGS_NONE, NULL) 68 73 69 74 struct thread; 70 75 71 76 extern void waitq_initialize(waitq_t *); 72 extern void waitq_initialize_with_count(waitq_t *, int); 73 extern errno_t waitq_sleep(waitq_t *); 74 extern errno_t _waitq_sleep_timeout(waitq_t *, uint32_t, unsigned int); 75 extern errno_t waitq_sleep_timeout(waitq_t *, uint32_t); 76 extern wait_guard_t waitq_sleep_prepare(waitq_t *); 77 extern errno_t waitq_sleep_unsafe(waitq_t *, wait_guard_t); 78 extern errno_t waitq_sleep_timeout_unsafe(waitq_t *, uint32_t, unsigned int, wait_guard_t); 79 80 extern void waitq_wake_one(waitq_t *); 81 extern void waitq_wake_all(waitq_t *); 82 extern void waitq_signal(waitq_t *); 83 extern void waitq_close(waitq_t *); 77 extern errno_t waitq_sleep_timeout(waitq_t *, uint32_t, unsigned int, bool *); 78 extern ipl_t waitq_sleep_prepare(waitq_t *); 79 extern errno_t waitq_sleep_timeout_unsafe(waitq_t *, uint32_t, unsigned int, bool *); 80 extern void waitq_sleep_finish(waitq_t *, bool, ipl_t); 81 extern void waitq_wakeup(waitq_t *, wakeup_mode_t); 82 extern void _waitq_wakeup_unsafe(waitq_t *, wakeup_mode_t); 83 extern void waitq_interrupt_sleep(struct thread *); 84 extern int waitq_count_get(waitq_t *); 85 extern void waitq_count_set(waitq_t *, int val); 84 86 85 87 #endif
Note:
See TracChangeset
for help on using the changeset viewer.