1e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat#ifndef _LINUX_LIST_H 2e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat#define _LINUX_LIST_H 3e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat 4e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat#include <stdio.h> 5e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat 6e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat#ifndef offsetof 7e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat/** 8e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * Get offset of a member 9e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat */ 10e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) 11e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat#endif 12e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat 13e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat#ifndef container_of 14e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat/** 15e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * Casts a member of a structure out to the containing structure 16e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * @param ptr the pointer to the member. 17e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * @param type the type of the container struct this is embedded in. 18e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * @param member the name of the member within the struct. 19e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * 20e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat */ 21e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat#define container_of(ptr, type, member) ({ \ 22e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat const typeof( ((type *)0)->member ) *__mptr = (ptr); \ 23e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat (type *)( (char *)__mptr - offsetof(type,member) );}) 24e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat#endif 25e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat 26e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat/* 27e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * These are non-NULL pointers that will result in page faults 28e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * under normal circumstances, used to verify that nobody uses 29e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * non-initialized list entries. 30e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat */ 31e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat#define LIST_POISON1 ((void *) 0x00100100) 32e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat#define LIST_POISON2 ((void *) 0x00200200) 33e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat 34e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehatstruct list_head { 35e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat struct list_head *next, *prev; 36e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat}; 37e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat 38e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat#define LIST_HEAD_INIT(name) { &(name), &(name) } 39e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat 40e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat#define LIST_HEAD(name) \ 41e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat struct list_head name = LIST_HEAD_INIT(name) 42e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat 43e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehatstatic inline void INIT_LIST_HEAD(struct list_head *list) 44e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat{ 45e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat list->next = list; 46e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat list->prev = list; 47e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat} 48e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat 49e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat/* 50e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * Insert a new entry between two known consecutive entries. 51e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * 52e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * This is only for internal list manipulation where we know 53e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * the prev/next entries already! 54e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat */ 55e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehatstatic inline void __list_add(struct list_head *new, 56e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat struct list_head *prev, 57e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat struct list_head *next) 58e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat{ 59e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat next->prev = new; 60e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat new->next = next; 61e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat new->prev = prev; 62e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat prev->next = new; 63e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat} 64e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat 65e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat/** 66e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * list_add - add a new entry 67e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * @new: new entry to be added 68e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * @head: list head to add it after 69e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * 70e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * Insert a new entry after the specified head. 71e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * This is good for implementing stacks. 72e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat */ 73e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehatstatic inline void list_add(struct list_head *new, struct list_head *head) 74e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat{ 75e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat __list_add(new, head, head->next); 76e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat} 77e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat 78e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat/** 79e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * list_add_tail - add a new entry 80e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * @new: new entry to be added 81e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * @head: list head to add it before 82e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * 83e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * Insert a new entry before the specified head. 84e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * This is useful for implementing queues. 85e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat */ 86e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehatstatic inline void list_add_tail(struct list_head *new, struct list_head *head) 87e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat{ 88e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat __list_add(new, head->prev, head); 89e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat} 90e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat 91e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat/* 92e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * Delete a list entry by making the prev/next entries 93e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * point to each other. 94e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * 95e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * This is only for internal list manipulation where we know 96e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * the prev/next entries already! 97e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat */ 98e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehatstatic inline void __list_del(struct list_head * prev, struct list_head * next) 99e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat{ 100e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat next->prev = prev; 101e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat prev->next = next; 102e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat} 103e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat 104e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat/** 105e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * list_del - deletes entry from list. 106e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * @entry: the element to delete from the list. 107e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * Note: list_empty on entry does not return true after this, the entry is 108e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * in an undefined state. 109e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat */ 110e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehatstatic inline void list_del(struct list_head *entry) 111e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat{ 112e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat __list_del(entry->prev, entry->next); 113e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat entry->next = LIST_POISON1; 114e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat entry->prev = LIST_POISON2; 115e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat} 116e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat 117e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat/** 118e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * __list_for_each - iterate over a list 119e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * @pos: the &struct list_head to use as a loop counter. 120e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * @head: the head for your list. 121e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * 122e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * This variant differs from list_for_each() in that it's the 123e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * simplest possible list iteration code, no prefetching is done. 124e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * Use this for code that knows the list to be very short (empty 125e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * or 1 entry) most of the time. 126e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat */ 127e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat#define __list_for_each(pos, head) \ 128e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat for (pos = (head)->next; pos != (head); pos = pos->next) 129e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat 130e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat/** 131e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * list_for_each_safe - iterate over a list safe against removal of list entry 132e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * @pos: the &struct list_head to use as a loop counter. 133e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * @n: another &struct list_head to use as temporary storage 134e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * @head: the head for your list. 135e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat */ 136e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat#define list_for_each_safe(pos, n, head) \ 137e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat for (pos = (head)->next, n = pos->next; pos != (head); \ 138e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat pos = n, n = pos->next) 139e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat 140e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat/** 141e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * list_entry - get the struct for this entry 142e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * @ptr: the &struct list_head pointer. 143e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * @type: the type of the struct this is embedded in. 144e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * @member: the name of the list_struct within the struct. 145e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat */ 146e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat#define list_entry(ptr, type, member) \ 147e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat container_of(ptr, type, member) 148e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat 149e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehatstatic inline int list_len(struct list_head *head_p) 150e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat{ 151e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat struct list_head *p; 152e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat int n = 0; 153e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat 154e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat __list_for_each(p, head_p) { 155e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat n++; 156e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat } 157e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat 158e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat return n; 159e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat} 160e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat 161e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat/** 162e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * list_empty - tests whether a list is empty 163e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * @head: the list to test. 164e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat */ 165e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehatstatic inline int list_empty(const struct list_head *head) 166e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat{ 167e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat return head->next == head; 168e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat} 169e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat 170e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat/** 171e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * list_first - Returns first entry on list, or NULL if empty 172e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * @head: the list 173e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat */ 174e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehatstatic inline struct list_head *list_first(const struct list_head *head) 175e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat{ 176e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat return list_empty(head) ? NULL : head->next; 177e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat} 178e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat 179e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat/** 180e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * list_move_tail - delete from one list and add as another's tail 181e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * @list: the entry to move 182e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * @head: the head that will follow our entry 183e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat */ 184e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehatstatic inline void list_move_tail(struct list_head *list, 185e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat struct list_head *head) 186e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat{ 187e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat __list_del(list->prev, list->next); 188e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat list_add_tail(list, head); 189e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat} 190e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat 191e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehatstatic inline void __list_splice(struct list_head *list, 192e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat struct list_head *head) 193e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat{ 194e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat struct list_head *first = list->next; 195e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat struct list_head *last = list->prev; 196e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat struct list_head *at = head->next; 197e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat 198e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat first->prev = head; 199e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat head->next = first; 200e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat 201e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat last->next = at; 202e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat at->prev = last; 203e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat} 204e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat 205e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat/** 206e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * * list_splice - join two lists 207e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * * @list: the new list to add. 208e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * * @head: the place to add it in the first list. 209e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * */ 210e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehatstatic inline void list_splice(struct list_head *list, struct list_head *head) 211e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat{ 212e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat if (!list_empty(list)) 213e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat __list_splice(list, head); 214e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat} 215e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat 216e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat/** 217e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * list_replace - replace old entry by new one 218e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * @old : the element to be replaced 219e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * @new : the new element to insert 220e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * 221e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat * If @old was empty, it will be overwritten. 222e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat */ 223e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehatstatic inline void list_replace(struct list_head *old, 224e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat struct list_head *new) 225e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat{ 226e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat new->next = old->next; 227e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat new->next->prev = new; 228e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat new->prev = old->prev; 229e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat new->prev->next = new; 230e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat} 231e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat 232e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehatstatic inline void list_replace_init(struct list_head *old, 233e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat struct list_head *new) 234e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat{ 235e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat list_replace(old, new); 236e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat INIT_LIST_HEAD(old); 237e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat} 238e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat 239e20e1347b9914aa05e30548c15d7cd5e412cc0e2San Mehat#endif 240