diff options
Diffstat (limited to 'include/linux/completion.h')
-rw-r--r-- | include/linux/completion.h | 62 |
1 files changed, 7 insertions, 55 deletions
diff --git a/include/linux/completion.h b/include/linux/completion.h index b8bac21..71c6b61 100644 --- a/include/linux/completion.h +++ b/include/linux/completion.h @@ -10,74 +10,26 @@ #include <linux/wait.h> -/* - * struct completion - structure used to maintain state for a "completion" - * - * This is the opaque structure used to maintain the state for a "completion". - * Completions currently use a FIFO to queue threads that have to wait for - * the "completion" event. - * - * See also: complete(), wait_for_completion() (and friends _timeout, - * _interruptible, _interruptible_timeout, and _killable), init_completion(), - * reinit_completion(), and macros DECLARE_COMPLETION(), - * DECLARE_COMPLETION_ONSTACK(). - */ struct completion { unsigned int done; wait_queue_head_t wait; }; -#define COMPLETION_INITIALIZER(work) \ - { 0, __WAIT_QUEUE_HEAD_INITIALIZER((work).wait) } +#define DECLARE_COMPLETION(work) \ + struct completion work = { \ + .done = 0, \ + .wait = __WAIT_QUEUE_HEAD_INITIALIZER((work).wait) \ + } -#define COMPLETION_INITIALIZER_ONSTACK(work) \ - ({ init_completion(&work); work; }) - -#define DECLARE_COMPLETION(work) \ - struct completion work = COMPLETION_INITIALIZER(work) #define DECLARE_COMPLETION_ONSTACK(work) DECLARE_COMPLETION(work) -/** - * init_completion - Initialize a dynamically allocated completion - * @x: pointer to completion structure that is to be initialized - * - * This inline function will initialize a dynamically created completion - * structure. - */ static inline void init_completion(struct completion *x) { x->done = 0; init_waitqueue_head(&x->wait); } -/** - * reinit_completion - reinitialize a completion structure - * @x: pointer to completion structure that is to be reinitialized - * - * This inline function should be used to reinitialize a completion structure so it can - * be reused. This is especially important after complete_all() is used. - */ -static inline void reinit_completion(struct completion *x) -{ - x->done = 0; -} - -extern void wait_for_completion(struct completion *); -extern void wait_for_completion_io(struct completion *); -extern int wait_for_completion_interruptible(struct completion *x); -extern int wait_for_completion_killable(struct completion *x); -extern unsigned long wait_for_completion_timeout(struct completion *x, - unsigned long timeout); -extern unsigned long wait_for_completion_io_timeout(struct completion *x, - unsigned long timeout); -extern long wait_for_completion_interruptible_timeout( - struct completion *x, unsigned long timeout); -extern long wait_for_completion_killable_timeout( - struct completion *x, unsigned long timeout); -extern bool try_wait_for_completion(struct completion *x); -extern bool completion_done(struct completion *x); - -extern void complete(struct completion *); -extern void complete_all(struct completion *); +void complete(struct completion *); +void wait_for_completion(struct completion *); #endif |