Lines Matching refs:list
49 #define ocs_list_set_list_magic list->magic = OCS_LIST_LIST_MAGIC
50 #define ocs_list_set_link_magic list->magic = OCS_LIST_LINK_MAGIC
83 #define item2link(list, item) ((ocs_list_t*) (((uint8_t*)(item)) + (list)->offset)) argument
86 #define link2item(list, link) ((void*) (((uint8_t*)(link)) - (list)->offset)) argument
100 _ocs_list_init(ocs_list_t *list, uint32_t offset) in _ocs_list_init() argument
102 ocs_list_assert(list); in _ocs_list_init()
105 list->next = list; in _ocs_list_init()
106 list->prev = list; in _ocs_list_init()
107 list->offset = offset; in _ocs_list_init()
120 ocs_list_empty(ocs_list_t *list) in ocs_list_empty() argument
122 ocs_list_assert(list, 1); in ocs_list_empty()
123 ocs_list_assert(list->magic == OCS_LIST_LIST_MAGIC, 1); in ocs_list_empty()
124 return list->next == list; in ocs_list_empty()
136 ocs_list_valid(ocs_list_t *list) in ocs_list_valid() argument
138 return (list->magic == OCS_LIST_LIST_MAGIC); in ocs_list_valid()
191 ocs_list_init_link(ocs_list_t *list, ocs_list_t *link) in ocs_list_init_link() argument
193 ocs_list_assert(list); in ocs_list_init_link()
194 ocs_list_assert(list->magic == OCS_LIST_LIST_MAGIC); in ocs_list_init_link()
199 link->offset = list->offset; in ocs_list_init_link()
216 ocs_list_add_head(ocs_list_t *list, void *item) in ocs_list_add_head() argument
220 ocs_list_assert(list); in ocs_list_add_head()
221 ocs_list_assert(list->magic == OCS_LIST_LIST_MAGIC); in ocs_list_add_head()
224 link = item2link(list, item); in ocs_list_add_head()
225 ocs_list_init_link(list, link); in ocs_list_add_head()
228 ocs_list_assert(link->offset == list->offset); in ocs_list_add_head()
232 _ocs_list_insert_link(list, list->next, item2link(list, item)); in ocs_list_add_head()
243 ocs_list_add_tail(ocs_list_t *list, void *item) in ocs_list_add_tail() argument
247 ocs_list_assert(list); in ocs_list_add_tail()
248 ocs_list_assert(list->magic == OCS_LIST_LIST_MAGIC); in ocs_list_add_tail()
251 link = item2link(list, item); in ocs_list_add_tail()
252 ocs_list_init_link(list, link); in ocs_list_add_tail()
255 ocs_list_assert(link->offset == list->offset); in ocs_list_add_tail()
259 _ocs_list_insert_link(list->prev, list, link); in ocs_list_add_tail()
271 ocs_list_get_head(ocs_list_t *list) in ocs_list_get_head() argument
273 ocs_list_assert(list, NULL); in ocs_list_get_head()
274 ocs_list_assert(list->magic == OCS_LIST_LIST_MAGIC, NULL); in ocs_list_get_head()
275 return ocs_list_empty(list) ? NULL : link2item(list, list->next); in ocs_list_get_head()
287 ocs_list_get_tail(ocs_list_t *list) in ocs_list_get_tail() argument
289 ocs_list_assert(list, NULL); in ocs_list_get_tail()
290 ocs_list_assert(list->magic == OCS_LIST_LIST_MAGIC, NULL); in ocs_list_get_tail()
291 return ocs_list_empty(list) ? NULL : link2item(list, list->prev); in ocs_list_get_tail()
302 static inline void *ocs_list_tail(ocs_list_t *list) in ocs_list_tail() argument
304 ocs_list_assert(list, NULL); in ocs_list_tail()
305 ocs_list_assert(list->magic == OCS_LIST_LIST_MAGIC, NULL); in ocs_list_tail()
306 return ocs_list_empty(list) ? NULL : link2item(list, list->prev); in ocs_list_tail()
318 static inline void *ocs_list_next(ocs_list_t *list, void *item) in ocs_list_next() argument
326 ocs_list_assert(list, NULL); in ocs_list_next()
327 ocs_list_assert(list->magic == OCS_LIST_LIST_MAGIC, NULL); in ocs_list_next()
330 link = item2link(list, item); in ocs_list_next()
333 ocs_list_assert(link->offset == list->offset, NULL); in ocs_list_next()
337 if ((link->next) == list) { in ocs_list_next()
341 return link2item(list, link->next); in ocs_list_next()
352 #define ocs_list_remove_head(list) ocs_list_remove(list, ocs_list_get_head(list)) argument
363 static inline void *ocs_list_remove(ocs_list_t *list, void *item) in ocs_list_remove() argument
372 ocs_list_assert(list, NULL); in ocs_list_remove()
373 ocs_list_assert(list->magic == OCS_LIST_LIST_MAGIC, NULL); in ocs_list_remove()
375 link = item2link(list, item); in ocs_list_remove()
378 ocs_list_assert(link->offset == list->offset, NULL); in ocs_list_remove()
406 #define ocs_list_foreach(list, item) \ argument
407 for (item = ocs_list_get_head((list)); item; item = ocs_list_next((list), item) )
424 #define ocs_list_foreach_safe(list, item, nxt) \ argument
425 for (item = ocs_list_get_head(list), nxt = item ? ocs_list_next(list, item) : NULL; item; \
426 item = nxt, nxt = ocs_list_next(list, item))