diff options
Diffstat (limited to 'include/linux/completion.h')
| -rw-r--r-- | include/linux/completion.h | 45 |
1 files changed, 0 insertions, 45 deletions
diff --git a/include/linux/completion.h b/include/linux/completion.h index 0662a417febe..94a59ba7d422 100644 --- a/include/linux/completion.h +++ b/include/linux/completion.h | |||
| @@ -10,9 +10,6 @@ | |||
| 10 | */ | 10 | */ |
| 11 | 11 | ||
| 12 | #include <linux/wait.h> | 12 | #include <linux/wait.h> |
| 13 | #ifdef CONFIG_LOCKDEP_COMPLETIONS | ||
| 14 | #include <linux/lockdep.h> | ||
| 15 | #endif | ||
| 16 | 13 | ||
| 17 | /* | 14 | /* |
| 18 | * struct completion - structure used to maintain state for a "completion" | 15 | * struct completion - structure used to maintain state for a "completion" |
| @@ -29,58 +26,16 @@ | |||
| 29 | struct completion { | 26 | struct completion { |
| 30 | unsigned int done; | 27 | unsigned int done; |
| 31 | wait_queue_head_t wait; | 28 | wait_queue_head_t wait; |
| 32 | #ifdef CONFIG_LOCKDEP_COMPLETIONS | ||
| 33 | struct lockdep_map_cross map; | ||
| 34 | #endif | ||
| 35 | }; | 29 | }; |
| 36 | 30 | ||
| 37 | #ifdef CONFIG_LOCKDEP_COMPLETIONS | ||
| 38 | static inline void complete_acquire(struct completion *x) | ||
| 39 | { | ||
| 40 | lock_acquire_exclusive((struct lockdep_map *)&x->map, 0, 0, NULL, _RET_IP_); | ||
| 41 | } | ||
| 42 | |||
| 43 | static inline void complete_release(struct completion *x) | ||
| 44 | { | ||
| 45 | lock_release((struct lockdep_map *)&x->map, 0, _RET_IP_); | ||
| 46 | } | ||
| 47 | |||
| 48 | static inline void complete_release_commit(struct completion *x) | ||
| 49 | { | ||
| 50 | lock_commit_crosslock((struct lockdep_map *)&x->map); | ||
| 51 | } | ||
| 52 | |||
| 53 | #define init_completion_map(x, m) \ | ||
| 54 | do { \ | ||
| 55 | lockdep_init_map_crosslock((struct lockdep_map *)&(x)->map, \ | ||
| 56 | (m)->name, (m)->key, 0); \ | ||
| 57 | __init_completion(x); \ | ||
| 58 | } while (0) | ||
| 59 | |||
| 60 | #define init_completion(x) \ | ||
| 61 | do { \ | ||
| 62 | static struct lock_class_key __key; \ | ||
| 63 | lockdep_init_map_crosslock((struct lockdep_map *)&(x)->map, \ | ||
| 64 | "(completion)" #x, \ | ||
| 65 | &__key, 0); \ | ||
| 66 | __init_completion(x); \ | ||
| 67 | } while (0) | ||
| 68 | #else | ||
| 69 | #define init_completion_map(x, m) __init_completion(x) | 31 | #define init_completion_map(x, m) __init_completion(x) |
| 70 | #define init_completion(x) __init_completion(x) | 32 | #define init_completion(x) __init_completion(x) |
| 71 | static inline void complete_acquire(struct completion *x) {} | 33 | static inline void complete_acquire(struct completion *x) {} |
| 72 | static inline void complete_release(struct completion *x) {} | 34 | static inline void complete_release(struct completion *x) {} |
| 73 | static inline void complete_release_commit(struct completion *x) {} | 35 | static inline void complete_release_commit(struct completion *x) {} |
| 74 | #endif | ||
| 75 | 36 | ||
| 76 | #ifdef CONFIG_LOCKDEP_COMPLETIONS | ||
| 77 | #define COMPLETION_INITIALIZER(work) \ | ||
| 78 | { 0, __WAIT_QUEUE_HEAD_INITIALIZER((work).wait), \ | ||
| 79 | STATIC_CROSS_LOCKDEP_MAP_INIT("(completion)" #work, &(work)) } | ||
| 80 | #else | ||
| 81 | #define COMPLETION_INITIALIZER(work) \ | 37 | #define COMPLETION_INITIALIZER(work) \ |
| 82 | { 0, __WAIT_QUEUE_HEAD_INITIALIZER((work).wait) } | 38 | { 0, __WAIT_QUEUE_HEAD_INITIALIZER((work).wait) } |
| 83 | #endif | ||
| 84 | 39 | ||
| 85 | #define COMPLETION_INITIALIZER_ONSTACK_MAP(work, map) \ | 40 | #define COMPLETION_INITIALIZER_ONSTACK_MAP(work, map) \ |
| 86 | (*({ init_completion_map(&(work), &(map)); &(work); })) | 41 | (*({ init_completion_map(&(work), &(map)); &(work); })) |
