Changeset ef1603b in mainline
- Timestamp:
- 2012-07-06T13:01:46Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 46a5b37
- Parents:
- d70fc74
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/include/adt/list.h
rd70fc74 ref1603b 71 71 iterator != &(list).head; iterator = iterator->next) 72 72 73 /** Unlike list_foreach(), allows removing items while traversing a list. 74 * 75 * @code 76 * list_t mylist; 77 * typedef struct item { 78 * int value; 79 * link_t item_link; 80 * } item_t; 81 * 82 * //.. 83 * 84 * // Print each list element's value and remove the element from the list. 85 * list_foreach_safe(mylist, cur_link, next_link) { 86 * item_t *cur_item = list_get_instance(cur_link, item_t, item_link); 87 * printf("%d\n", cur_item->value); 88 * list_remove(cur_link); 89 * } 90 * @endcode 91 * 92 * @param list List to traverse. 93 * @param iterator Iterator to the current element of the list. 94 * The item this iterator points may be safely removed 95 * from the list. 96 * @param next_iter Iterator to the next element of the list. 97 */ 98 #define list_foreach_safe(list, iterator, next_iter) \ 99 for (link_t *iterator = (list).head.next, \ 100 *next_iter = iterator->next; \ 101 iterator != &(list).head; \ 102 iterator = next_iter, next_iter = iterator->next) 103 104 73 105 #define assert_link_not_used(link) \ 74 106 ASSERT(((link)->prev == NULL) && ((link)->next == NULL)) … … 85 117 link->prev = NULL; 86 118 link->next = NULL; 119 } 120 121 /** Returns true if the initialized link is already in use by any list. 122 * 123 * @param link Link to examine whether if belongs to a list or not. 124 * @return 1 if the link is part of a list. 125 * @return 0 otherwise. 126 */ 127 NO_TRACE static inline int link_used(const link_t *link) 128 { 129 return link->prev != NULL || link->next != NULL; 87 130 } 88 131
Note:
See TracChangeset
for help on using the changeset viewer.