diff options
| -rw-r--r-- | include/linux/llist.h | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/include/linux/llist.h b/include/linux/llist.h index 3e2b969d68f6..cdaa7f023899 100644 --- a/include/linux/llist.h +++ b/include/linux/llist.h | |||
| @@ -142,6 +142,9 @@ static inline struct llist_node *llist_next(struct llist_node *node) | |||
| 142 | return node->next; | 142 | return node->next; |
| 143 | } | 143 | } |
| 144 | 144 | ||
| 145 | extern bool llist_add_batch(struct llist_node *new_first, | ||
| 146 | struct llist_node *new_last, | ||
| 147 | struct llist_head *head); | ||
| 145 | /** | 148 | /** |
| 146 | * llist_add - add a new entry | 149 | * llist_add - add a new entry |
| 147 | * @new: new entry to be added | 150 | * @new: new entry to be added |
| @@ -151,13 +154,7 @@ static inline struct llist_node *llist_next(struct llist_node *node) | |||
| 151 | */ | 154 | */ |
| 152 | static inline bool llist_add(struct llist_node *new, struct llist_head *head) | 155 | static inline bool llist_add(struct llist_node *new, struct llist_head *head) |
| 153 | { | 156 | { |
| 154 | struct llist_node *first; | 157 | return llist_add_batch(new, new, head); |
| 155 | |||
| 156 | do { | ||
| 157 | new->next = first = ACCESS_ONCE(head->first); | ||
| 158 | } while (cmpxchg(&head->first, first, new) != first); | ||
| 159 | |||
| 160 | return !first; | ||
| 161 | } | 158 | } |
| 162 | 159 | ||
| 163 | /** | 160 | /** |
| @@ -173,9 +170,6 @@ static inline struct llist_node *llist_del_all(struct llist_head *head) | |||
| 173 | return xchg(&head->first, NULL); | 170 | return xchg(&head->first, NULL); |
| 174 | } | 171 | } |
| 175 | 172 | ||
| 176 | extern bool llist_add_batch(struct llist_node *new_first, | ||
| 177 | struct llist_node *new_last, | ||
| 178 | struct llist_head *head); | ||
| 179 | extern struct llist_node *llist_del_first(struct llist_head *head); | 173 | extern struct llist_node *llist_del_first(struct llist_head *head); |
| 180 | 174 | ||
| 181 | #endif /* LLIST_H */ | 175 | #endif /* LLIST_H */ |
