MEDIUM: lists: list_for_each_entry{_safe}_from functions
Add list_for_each_entry_from and list_for_each_entry_safe_from which allows to iterate in a list starting from a specific item.
This commit is contained in:
parent
2a97966b08
commit
83215a44b8
|
@ -127,6 +127,16 @@ struct cond_wordlist {
|
|||
&item->member != (list_head); \
|
||||
item = LIST_ELEM(item->member.n, typeof(item), member))
|
||||
|
||||
/*
|
||||
* Same as list_for_each_entry but starting from current point
|
||||
* Iterates <item> through the list starting from <item>
|
||||
* It's basically the same macro but without initializing item to the head of
|
||||
* the list.
|
||||
*/
|
||||
#define list_for_each_entry_from(item, list_head, member) \
|
||||
for ( ; &item->member != (list_head); \
|
||||
item = LIST_ELEM(item->member.n, typeof(item), member))
|
||||
|
||||
/*
|
||||
* Simpler FOREACH_ITEM_SAFE macro inspired from Linux sources.
|
||||
* Iterates <item> through a list of items of type "typeof(*item)" which are
|
||||
|
@ -142,4 +152,16 @@ struct cond_wordlist {
|
|||
item = back, back = LIST_ELEM(back->member.n, typeof(back), member))
|
||||
|
||||
|
||||
/*
|
||||
* Same as list_for_each_entry_safe but starting from current point
|
||||
* Iterates <item> through the list starting from <item>
|
||||
* It's basically the same macro but without initializing item to the head of
|
||||
* the list.
|
||||
*/
|
||||
#define list_for_each_entry_safe_from(item, back, list_head, member) \
|
||||
for (back = LIST_ELEM(item->member.n, typeof(item), member); \
|
||||
&item->member != (list_head); \
|
||||
item = back, back = LIST_ELEM(back->member.n, typeof(back), member))
|
||||
|
||||
|
||||
#endif /* _COMMON_MINI_CLIST_H */
|
||||
|
|
Loading…
Reference in New Issue