Changes in kernel/generic/include/synch/waitq.h [d314571:111b9b9] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/include/synch/waitq.h
rd314571 r111b9b9 41 41 #include <adt/list.h> 42 42 43 typedef enum {44 WAKEUP_FIRST = 0,45 WAKEUP_ALL46 } wakeup_mode_t;47 48 43 /** Wait queue structure. 49 44 * … … 57 52 58 53 /** 59 * Number of waitq_wakeup() calls that didn't find a thread to wake up.60 * 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. 61 56 */ 62 int missed_wakeups; 63 64 /** Number of wakeups that need to be ignored due to futex timeout. */ 65 int ignore_wakeups; 57 int wakeup_balance; 66 58 67 59 /** List of sleeping threads for which there was no missed_wakeup. */ 68 60 list_t sleepers; 61 62 bool closed; 69 63 } waitq_t; 70 64 71 #define waitq_sleep(wq) \ 72 waitq_sleep_timeout((wq), SYNCH_NO_TIMEOUT, SYNCH_FLAGS_NONE, NULL) 65 typedef struct wait_guard { 66 ipl_t ipl; 67 } wait_guard_t; 73 68 74 69 struct thread; 75 70 76 71 extern void waitq_initialize(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); 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 *); 86 84 87 85 #endif
Note:
See TracChangeset
for help on using the changeset viewer.