diff options
Diffstat (limited to 'include/linux/list.h')
| -rw-r--r-- | include/linux/list.h | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/include/linux/list.h b/include/linux/list.h index de04cc5ed536..edb7628e46ed 100644 --- a/include/linux/list.h +++ b/include/linux/list.h | |||
| @@ -184,6 +184,29 @@ static inline void list_move_tail(struct list_head *list, | |||
| 184 | } | 184 | } |
| 185 | 185 | ||
| 186 | /** | 186 | /** |
| 187 | * list_bulk_move_tail - move a subsection of a list to its tail | ||
| 188 | * @head: the head that will follow our entry | ||
| 189 | * @first: first entry to move | ||
| 190 | * @last: last entry to move, can be the same as first | ||
| 191 | * | ||
| 192 | * Move all entries between @first and including @last before @head. | ||
| 193 | * All three entries must belong to the same linked list. | ||
| 194 | */ | ||
| 195 | static inline void list_bulk_move_tail(struct list_head *head, | ||
| 196 | struct list_head *first, | ||
| 197 | struct list_head *last) | ||
| 198 | { | ||
| 199 | first->prev->next = last->next; | ||
| 200 | last->next->prev = first->prev; | ||
| 201 | |||
| 202 | head->prev->next = first; | ||
| 203 | first->prev = head->prev; | ||
| 204 | |||
| 205 | last->next = head; | ||
| 206 | head->prev = last; | ||
| 207 | } | ||
| 208 | |||
| 209 | /** | ||
| 187 | * list_is_last - tests whether @list is the last entry in list @head | 210 | * list_is_last - tests whether @list is the last entry in list @head |
| 188 | * @list: the entry to test | 211 | * @list: the entry to test |
| 189 | * @head: the head of the list | 212 | * @head: the head of the list |
