Lines Matching refs:link

20 /** Initializes the list with a specified offset to the link
27 list->link.next = list->link.prev = &list->link;
39 /** Adds a link to the head of the list
45 list_link *link = (list_link *)_link;
47 link->next = list->link.next;
48 link->prev = &list->link;
50 list->link.next->prev = link;
51 list->link.next = link;
54 ASSERT(link->next != link);
59 /** Adds a link to the tail of the list
65 list_link *link = (list_link *)_link;
67 link->next = &list->link;
68 link->prev = list->link.prev;
70 list->link.prev->next = link;
71 list->link.prev = link;
74 ASSERT(link->prev != link);
79 /** Removes a link from the list it's currently in.
80 * Note: the link has to be in a list when you call this function.
86 list_link *link = (list_link *)_link;
88 link->next->prev = link->prev;
89 link->prev->next = link->next;
92 link->prev = link->next = NULL;
98 get_next_link(struct list *list, list_link *link)
100 if (link->next == &list->link)
103 return link->next;
108 get_prev_link(struct list *list, list_link *link)
110 if (link->prev == &list->link)
113 return link->prev;
126 list_link *link;
129 return list_is_empty(list) ? NULL : GET_ITEM(list, list->link.next);
131 link = get_next_link(list, GET_LINK(list, item));
132 return link != NULL ? GET_ITEM(list, link) : NULL;
145 list_link *link;
148 return list_is_empty(list) ? NULL : GET_ITEM(list, list->link.prev);
150 link = get_prev_link(list, GET_LINK(list, item));
151 return link != NULL ? GET_ITEM(list, link) : NULL;
158 return list_is_empty(list) ? NULL : GET_ITEM(list, list->link.prev);
163 * Similar to list_add_link_to_tail() but works on the item, not the link.
174 * Similar to list_remove_link() but works on the item, not the link.
193 list_link *link;
201 link = GET_LINK(list, item);
203 link->prev = beforeLink->prev;
204 link->next = beforeLink;
206 beforeLink->prev->next = link;
207 beforeLink->prev = link;
218 list_link *link;
223 list_remove_link(link = list->link.next);
224 return GET_ITEM(list, link);
235 list_link *link;
240 list_remove_link(link = list->link.prev);
241 return GET_ITEM(list, link);
254 targetList->link.next = targetList->link.prev = &targetList->link;
260 // correct link pointers to this list
261 targetList->link.next->prev = &targetList->link;
262 targetList->link.prev->next = &targetList->link;
265 sourceList->link.next = sourceList->link.prev = &sourceList->link;