diff options
Diffstat (limited to 'shared/list.h')
-rw-r--r-- | shared/list.h | 202 |
1 files changed, 98 insertions, 104 deletions
diff --git a/shared/list.h b/shared/list.h index fcd005a..25f4219 100644 --- a/shared/list.h +++ b/shared/list.h @@ -17,15 +17,17 @@ struct list_head { }; #define WRITE_ONCE(a, b) ((a) = (b)) -#define READ_ONCE(a) (a) -#define LIST_POISON1 ((void *) 0x100) -#define LIST_POISON2 ((void *) 0x122) +#define READ_ONCE(a) (a) +#define LIST_POISON1 ((void *)0x100) +#define LIST_POISON2 ((void *)0x122) -#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) +#define offsetof(TYPE, MEMBER) ((size_t) & ((TYPE *)0)->MEMBER) -#define container_of(ptr, type, member) __extension__ ({ \ - const typeof( ((type *)0)->member ) *__mptr = (ptr); \ - (type *)( (char *)__mptr - offsetof(type,member) );}) +#define container_of(ptr, type, member) \ + __extension__({ \ + const typeof(((type *)0)->member) *__mptr = (ptr); \ + (type *)((char *)__mptr - offsetof(type, member)); \ + }) /* End of added stuff */ @@ -39,10 +41,12 @@ struct list_head { * using the generic single-entry routines. */ -#define LIST_HEAD_INIT(name) { &(name), &(name) } +#define LIST_HEAD_INIT(name) \ + { \ + &(name), &(name) \ + } -#define LIST_HEAD(name) \ - struct list_head name = LIST_HEAD_INIT(name) +#define LIST_HEAD(name) struct list_head name = LIST_HEAD_INIT(name) /** * INIT_LIST_HEAD - Initialize a list_head structure @@ -58,14 +62,13 @@ static inline void INIT_LIST_HEAD(struct list_head *list) } #ifdef CONFIG_DEBUG_LIST -extern bool __list_add_valid(struct list_head *new, - struct list_head *prev, - struct list_head *next); +extern bool __list_add_valid(struct list_head *new, struct list_head *prev, + struct list_head *next); extern bool __list_del_entry_valid(struct list_head *entry); #else static inline bool __list_add_valid(_unused_ struct list_head *new, - _unused_ struct list_head *prev, - _unused_ struct list_head *next) + _unused_ struct list_head *prev, + _unused_ struct list_head *next) { return true; } @@ -81,8 +84,7 @@ static inline bool __list_del_entry_valid(_unused_ struct list_head *entry) * This is only for internal list manipulation where we know * the prev/next entries already! */ -static inline void __list_add(struct list_head *new, - struct list_head *prev, +static inline void __list_add(struct list_head *new, struct list_head *prev, struct list_head *next) { if (!__list_add_valid(new, prev, next)) @@ -107,7 +109,6 @@ static inline void list_add(struct list_head *new, struct list_head *head) __list_add(new, head, head->next); } - /** * list_add_tail - add a new entry * @new: new entry to be added @@ -128,7 +129,7 @@ static inline void list_add_tail(struct list_head *new, struct list_head *head) * This is only for internal list manipulation where we know * the prev/next entries already! */ -static inline void __list_del(struct list_head * prev, struct list_head * next) +static inline void __list_del(struct list_head *prev, struct list_head *next) { next->prev = prev; WRITE_ONCE(prev->next, next); @@ -176,8 +177,7 @@ static inline void list_del(struct list_head *entry) * * If @old was empty, it will be overwritten. */ -static inline void list_replace(struct list_head *old, - struct list_head *new) +static inline void list_replace(struct list_head *old, struct list_head *new) { new->next = old->next; new->next->prev = new; @@ -204,8 +204,7 @@ static inline void list_replace_init(struct list_head *old, * @entry1: the location to place entry2 * @entry2: the location to place entry1 */ -static inline void list_swap(struct list_head *entry1, - struct list_head *entry2) +static inline void list_swap(struct list_head *entry1, struct list_head *entry2) { struct list_head *pos = entry2->prev; @@ -278,7 +277,7 @@ static inline void list_bulk_move_tail(struct list_head *head, * @head: the head of the list */ static inline int list_is_first(const struct list_head *list, - const struct list_head *head) + const struct list_head *head) { return list->prev == head; } @@ -289,7 +288,7 @@ static inline int list_is_first(const struct list_head *list, * @head: the head of the list */ static inline int list_is_last(const struct list_head *list, - const struct list_head *head) + const struct list_head *head) { return list->next == head; } @@ -364,7 +363,8 @@ static inline int list_is_singular(const struct list_head *head) } static inline void __list_cut_position(struct list_head *list, - struct list_head *head, struct list_head *entry) + struct list_head *head, + struct list_head *entry) { struct list_head *new_first = entry->next; list->next = head->next; @@ -390,12 +390,12 @@ static inline void __list_cut_position(struct list_head *list, * */ static inline void list_cut_position(struct list_head *list, - struct list_head *head, struct list_head *entry) + struct list_head *head, + struct list_head *entry) { if (list_empty(head)) return; - if (list_is_singular(head) && - (head->next != entry && head != entry)) + if (list_is_singular(head) && (head->next != entry && head != entry)) return; if (entry == head) INIT_LIST_HEAD(list); @@ -434,8 +434,7 @@ static inline void list_cut_before(struct list_head *list, } static inline void __list_splice(const struct list_head *list, - struct list_head *prev, - struct list_head *next) + struct list_head *prev, struct list_head *next) { struct list_head *first = list->next; struct list_head *last = list->prev; @@ -453,7 +452,7 @@ static inline void __list_splice(const struct list_head *list, * @head: the place to add it in the first list. */ static inline void list_splice(const struct list_head *list, - struct list_head *head) + struct list_head *head) { if (!list_empty(list)) __list_splice(list, head, head->next); @@ -465,7 +464,7 @@ static inline void list_splice(const struct list_head *list, * @head: the place to add it in the first list. */ static inline void list_splice_tail(struct list_head *list, - struct list_head *head) + struct list_head *head) { if (!list_empty(list)) __list_splice(list, head->prev, head); @@ -510,8 +509,7 @@ static inline void list_splice_tail_init(struct list_head *list, * @type: the type of the struct this is embedded in. * @member: the name of the list_head within the struct. */ -#define list_entry(ptr, type, member) \ - container_of(ptr, type, member) +#define list_entry(ptr, type, member) container_of(ptr, type, member) /** * list_first_entry - get the first element from a list @@ -521,7 +519,7 @@ static inline void list_splice_tail_init(struct list_head *list, * * Note, that list is expected to be not empty. */ -#define list_first_entry(ptr, type, member) \ +#define list_first_entry(ptr, type, member) \ list_entry((ptr)->next, type, member) /** @@ -532,8 +530,7 @@ static inline void list_splice_tail_init(struct list_head *list, * * Note, that list is expected to be not empty. */ -#define list_last_entry(ptr, type, member) \ - list_entry((ptr)->prev, type, member) +#define list_last_entry(ptr, type, member) list_entry((ptr)->prev, type, member) /** * list_first_entry_or_null - get the first element from a list @@ -543,18 +540,19 @@ static inline void list_splice_tail_init(struct list_head *list, * * Note that if the list is empty, it returns NULL. */ -#define list_first_entry_or_null(ptr, type, member) ({ \ - struct list_head *head__ = (ptr); \ - struct list_head *pos__ = READ_ONCE(head__->next); \ - pos__ != head__ ? list_entry(pos__, type, member) : NULL; \ -}) +#define list_first_entry_or_null(ptr, type, member) \ + ({ \ + struct list_head *head__ = (ptr); \ + struct list_head *pos__ = READ_ONCE(head__->next); \ + pos__ != head__ ? list_entry(pos__, type, member) : NULL; \ + }) /** * list_next_entry - get the next element in list * @pos: the type * to cursor * @member: the name of the list_head within the struct. */ -#define list_next_entry(pos, member) \ +#define list_next_entry(pos, member) \ list_entry((pos)->member.next, typeof(*(pos)), member) /** @@ -562,7 +560,7 @@ static inline void list_splice_tail_init(struct list_head *list, * @pos: the type * to cursor * @member: the name of the list_head within the struct. */ -#define list_prev_entry(pos, member) \ +#define list_prev_entry(pos, member) \ list_entry((pos)->member.prev, typeof(*(pos)), member) /** @@ -570,7 +568,7 @@ static inline void list_splice_tail_init(struct list_head *list, * @pos: the &struct list_head to use as a loop cursor. * @head: the head for your list. */ -#define list_for_each(pos, head) \ +#define list_for_each(pos, head) \ for (pos = (head)->next; pos != (head); pos = pos->next) /** @@ -580,7 +578,7 @@ static inline void list_splice_tail_init(struct list_head *list, * * Continue to iterate over a list, continuing after the current position. */ -#define list_for_each_continue(pos, head) \ +#define list_for_each_continue(pos, head) \ for (pos = pos->next; pos != (head); pos = pos->next) /** @@ -588,7 +586,7 @@ static inline void list_splice_tail_init(struct list_head *list, * @pos: the &struct list_head to use as a loop cursor. * @head: the head for your list. */ -#define list_for_each_prev(pos, head) \ +#define list_for_each_prev(pos, head) \ for (pos = (head)->prev; pos != (head); pos = pos->prev) /** @@ -597,19 +595,19 @@ static inline void list_splice_tail_init(struct list_head *list, * @n: another &struct list_head to use as temporary storage * @head: the head for your list. */ -#define list_for_each_safe(pos, n, head) \ - for (pos = (head)->next, n = pos->next; pos != (head); \ - pos = n, n = pos->next) +#define list_for_each_safe(pos, n, head) \ + for (pos = (head)->next, n = pos->next; pos != (head); \ + pos = n, n = pos->next) /** - * list_for_each_prev_safe - iterate over a list backwards safe against removal of list entry + * list_for_each_prev_safe - iterate over a list backwards safe against removal + * of list entry * @pos: the &struct list_head to use as a loop cursor. * @n: another &struct list_head to use as temporary storage * @head: the head for your list. */ -#define list_for_each_prev_safe(pos, n, head) \ - for (pos = (head)->prev, n = pos->prev; \ - pos != (head); \ +#define list_for_each_prev_safe(pos, n, head) \ + for (pos = (head)->prev, n = pos->prev; pos != (head); \ pos = n, n = pos->prev) /** @@ -618,10 +616,9 @@ static inline void list_splice_tail_init(struct list_head *list, * @head: the head for your list. * @member: the name of the list_head within the struct. */ -#define list_for_each_entry(pos, head, member) \ - for (pos = list_first_entry(head, typeof(*pos), member); \ - &pos->member != (head); \ - pos = list_next_entry(pos, member)) +#define list_for_each_entry(pos, head, member) \ + for (pos = list_first_entry(head, typeof(*pos), member); \ + &pos->member != (head); pos = list_next_entry(pos, member)) /** * list_for_each_entry_reverse - iterate backwards over list of given type. @@ -629,21 +626,22 @@ static inline void list_splice_tail_init(struct list_head *list, * @head: the head for your list. * @member: the name of the list_head within the struct. */ -#define list_for_each_entry_reverse(pos, head, member) \ - for (pos = list_last_entry(head, typeof(*pos), member); \ - &pos->member != (head); \ - pos = list_prev_entry(pos, member)) +#define list_for_each_entry_reverse(pos, head, member) \ + for (pos = list_last_entry(head, typeof(*pos), member); \ + &pos->member != (head); pos = list_prev_entry(pos, member)) /** - * list_prepare_entry - prepare a pos entry for use in list_for_each_entry_continue() + * list_prepare_entry - prepare a pos entry for use in + * list_for_each_entry_continue() * @pos: the type * to use as a start point * @head: the head of the list * @member: the name of the list_head within the struct. * - * Prepares a pos entry for use as a start point in list_for_each_entry_continue(). + * Prepares a pos entry for use as a start point in + * list_for_each_entry_continue(). */ -#define list_prepare_entry(pos, head, member) \ - ((pos) ? : list_entry(head, typeof(*pos), member)) +#define list_prepare_entry(pos, head, member) \ + ((pos) ?: list_entry(head, typeof(*pos), member)) /** * list_for_each_entry_continue - continue iteration over list of given type @@ -654,9 +652,8 @@ static inline void list_splice_tail_init(struct list_head *list, * Continue to iterate over list of given type, continuing after * the current position. */ -#define list_for_each_entry_continue(pos, head, member) \ - for (pos = list_next_entry(pos, member); \ - &pos->member != (head); \ +#define list_for_each_entry_continue(pos, head, member) \ + for (pos = list_next_entry(pos, member); &pos->member != (head); \ pos = list_next_entry(pos, member)) /** @@ -668,22 +665,21 @@ static inline void list_splice_tail_init(struct list_head *list, * Start to iterate over list of given type backwards, continuing after * the current position. */ -#define list_for_each_entry_continue_reverse(pos, head, member) \ - for (pos = list_prev_entry(pos, member); \ - &pos->member != (head); \ +#define list_for_each_entry_continue_reverse(pos, head, member) \ + for (pos = list_prev_entry(pos, member); &pos->member != (head); \ pos = list_prev_entry(pos, member)) /** - * list_for_each_entry_from - iterate over list of given type from the current point + * list_for_each_entry_from - iterate over list of given type from the current + * point * @pos: the type * to use as a loop cursor. * @head: the head for your list. * @member: the name of the list_head within the struct. * * Iterate over list of given type, continuing from current position. */ -#define list_for_each_entry_from(pos, head, member) \ - for (; &pos->member != (head); \ - pos = list_next_entry(pos, member)) +#define list_for_each_entry_from(pos, head, member) \ + for (; &pos->member != (head); pos = list_next_entry(pos, member)) /** * list_for_each_entry_from_reverse - iterate backwards over list of given type @@ -694,25 +690,25 @@ static inline void list_splice_tail_init(struct list_head *list, * * Iterate backwards over list of given type, continuing from current position. */ -#define list_for_each_entry_from_reverse(pos, head, member) \ - for (; &pos->member != (head); \ - pos = list_prev_entry(pos, member)) +#define list_for_each_entry_from_reverse(pos, head, member) \ + for (; &pos->member != (head); pos = list_prev_entry(pos, member)) /** - * list_for_each_entry_safe - iterate over list of given type safe against removal of list entry + * list_for_each_entry_safe - iterate over list of given type safe against + * removal of list entry * @pos: the type * to use as a loop cursor. * @n: another type * to use as temporary storage * @head: the head for your list. * @member: the name of the list_head within the struct. */ -#define list_for_each_entry_safe(pos, n, head, member) \ - for (pos = list_first_entry(head, typeof(*pos), member), \ - n = list_next_entry(pos, member); \ - &pos->member != (head); \ - pos = n, n = list_next_entry(n, member)) +#define list_for_each_entry_safe(pos, n, head, member) \ + for (pos = list_first_entry(head, typeof(*pos), member), \ + n = list_next_entry(pos, member); \ + &pos->member != (head); pos = n, n = list_next_entry(n, member)) /** - * list_for_each_entry_safe_continue - continue list iteration safe against removal + * list_for_each_entry_safe_continue - continue list iteration safe against + * removal * @pos: the type * to use as a loop cursor. * @n: another type * to use as temporary storage * @head: the head for your list. @@ -721,14 +717,14 @@ static inline void list_splice_tail_init(struct list_head *list, * Iterate over list of given type, continuing after current point, * safe against removal of list entry. */ -#define list_for_each_entry_safe_continue(pos, n, head, member) \ - for (pos = list_next_entry(pos, member), \ - n = list_next_entry(pos, member); \ - &pos->member != (head); \ - pos = n, n = list_next_entry(n, member)) +#define list_for_each_entry_safe_continue(pos, n, head, member) \ + for (pos = list_next_entry(pos, member), \ + n = list_next_entry(pos, member); \ + &pos->member != (head); pos = n, n = list_next_entry(n, member)) /** - * list_for_each_entry_safe_from - iterate over list from current point safe against removal + * list_for_each_entry_safe_from - iterate over list from current point safe + * against removal * @pos: the type * to use as a loop cursor. * @n: another type * to use as temporary storage * @head: the head for your list. @@ -737,13 +733,13 @@ static inline void list_splice_tail_init(struct list_head *list, * Iterate over list of given type from current point, safe against * removal of list entry. */ -#define list_for_each_entry_safe_from(pos, n, head, member) \ - for (n = list_next_entry(pos, member); \ - &pos->member != (head); \ +#define list_for_each_entry_safe_from(pos, n, head, member) \ + for (n = list_next_entry(pos, member); &pos->member != (head); \ pos = n, n = list_next_entry(n, member)) /** - * list_for_each_entry_safe_reverse - iterate backwards over list safe against removal + * list_for_each_entry_safe_reverse - iterate backwards over list safe against + * removal * @pos: the type * to use as a loop cursor. * @n: another type * to use as temporary storage * @head: the head for your list. @@ -752,11 +748,10 @@ static inline void list_splice_tail_init(struct list_head *list, * Iterate backwards over list of given type, safe against removal * of list entry. */ -#define list_for_each_entry_safe_reverse(pos, n, head, member) \ - for (pos = list_last_entry(head, typeof(*pos), member), \ - n = list_prev_entry(pos, member); \ - &pos->member != (head); \ - pos = n, n = list_prev_entry(n, member)) +#define list_for_each_entry_safe_reverse(pos, n, head, member) \ + for (pos = list_last_entry(head, typeof(*pos), member), \ + n = list_prev_entry(pos, member); \ + &pos->member != (head); pos = n, n = list_prev_entry(n, member)) /** * list_safe_reset_next - reset a stale list_for_each_entry_safe loop @@ -770,7 +765,6 @@ static inline void list_splice_tail_init(struct list_head *list, * and list_safe_reset_next is called after re-taking the lock and before * completing the current iteration of the loop body. */ -#define list_safe_reset_next(pos, n, member) \ - n = list_next_entry(pos, member) +#define list_safe_reset_next(pos, n, member) n = list_next_entry(pos, member) #endif |