Skip to content

Commit c14a304

Browse files
samitolvanenmasahir0y
authored andcommitted
scripts: import more list macros
Import list_is_first, list_is_last, list_replace, and list_replace_init. Signed-off-by: Sami Tolvanen <[email protected]> Signed-off-by: Masahiro Yamada <[email protected]>
1 parent 984ed20 commit c14a304

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

scripts/include/list.h

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,36 @@ static inline void list_del(struct list_head *entry)
127127
entry->prev = LIST_POISON2;
128128
}
129129

130+
/**
131+
* list_replace - replace old entry by new one
132+
* @old : the element to be replaced
133+
* @new : the new element to insert
134+
*
135+
* If @old was empty, it will be overwritten.
136+
*/
137+
static inline void list_replace(struct list_head *old,
138+
struct list_head *new)
139+
{
140+
new->next = old->next;
141+
new->next->prev = new;
142+
new->prev = old->prev;
143+
new->prev->next = new;
144+
}
145+
146+
/**
147+
* list_replace_init - replace old entry by new one and initialize the old one
148+
* @old : the element to be replaced
149+
* @new : the new element to insert
150+
*
151+
* If @old was empty, it will be overwritten.
152+
*/
153+
static inline void list_replace_init(struct list_head *old,
154+
struct list_head *new)
155+
{
156+
list_replace(old, new);
157+
INIT_LIST_HEAD(old);
158+
}
159+
130160
/**
131161
* list_move - delete from one list and add as another's head
132162
* @list: the entry to move
@@ -150,6 +180,26 @@ static inline void list_move_tail(struct list_head *list,
150180
list_add_tail(list, head);
151181
}
152182

183+
/**
184+
* list_is_first -- tests whether @list is the first entry in list @head
185+
* @list: the entry to test
186+
* @head: the head of the list
187+
*/
188+
static inline int list_is_first(const struct list_head *list, const struct list_head *head)
189+
{
190+
return list->prev == head;
191+
}
192+
193+
/**
194+
* list_is_last - tests whether @list is the last entry in list @head
195+
* @list: the entry to test
196+
* @head: the head of the list
197+
*/
198+
static inline int list_is_last(const struct list_head *list, const struct list_head *head)
199+
{
200+
return list->next == head;
201+
}
202+
153203
/**
154204
* list_is_head - tests whether @list is the list @head
155205
* @list: the entry to test

0 commit comments

Comments
 (0)