diff options
Diffstat (limited to 'include/linux/completion.h')
| -rw-r--r-- | include/linux/completion.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/include/linux/completion.h b/include/linux/completion.h index 90663ad217f9..251c41e3ddd5 100644 --- a/include/linux/completion.h +++ b/include/linux/completion.h | |||
| @@ -21,6 +21,18 @@ struct completion { | |||
| 21 | #define DECLARE_COMPLETION(work) \ | 21 | #define DECLARE_COMPLETION(work) \ |
| 22 | struct completion work = COMPLETION_INITIALIZER(work) | 22 | struct completion work = COMPLETION_INITIALIZER(work) |
| 23 | 23 | ||
| 24 | /* | ||
| 25 | * Lockdep needs to run a non-constant initializer for on-stack | ||
| 26 | * completions - so we use the _ONSTACK() variant for those that | ||
| 27 | * are on the kernel stack: | ||
| 28 | */ | ||
| 29 | #ifdef CONFIG_LOCKDEP | ||
| 30 | # define DECLARE_COMPLETION_ONSTACK(work) \ | ||
| 31 | struct completion work = ({ init_completion(&work); work; }) | ||
| 32 | #else | ||
| 33 | # define DECLARE_COMPLETION_ONSTACK(work) DECLARE_COMPLETION(work) | ||
| 34 | #endif | ||
| 35 | |||
| 24 | static inline void init_completion(struct completion *x) | 36 | static inline void init_completion(struct completion *x) |
| 25 | { | 37 | { |
| 26 | x->done = 0; | 38 | x->done = 0; |
