diff options
| author | Sebastien Bacher <seb128@ubuntu.com> | 2019-01-25 10:52:15 +0100 |
|---|---|---|
| committer | Sebastien Bacher <seb128@ubuntu.com> | 2019-01-25 11:24:27 +0100 |
| commit | e8ac7dacdcf4b38addef4f8ac6ab038f9d29582c (patch) | |
| tree | 017883e210043859ee695250f6285380b795f8e4 /shared/c-list/src | |
| parent | b05c072fe2594e0369cbfb00a3fba176d2d309dc (diff) | |
| parent | 1b878e595ff7be634a4800ca6cc506046e49548e (diff) | |
Merge remote-tracking branch 'salsa/master' into disco
Diffstat (limited to 'shared/c-list/src')
| -rw-r--r-- | shared/c-list/src/c-list.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/shared/c-list/src/c-list.h b/shared/c-list/src/c-list.h index ff434d8d..3d44e330 100644 --- a/shared/c-list/src/c-list.h +++ b/shared/c-list/src/c-list.h @@ -367,6 +367,25 @@ static inline CList *c_list_last(CList *list) { _safe = c_list_entry((_safe)->_m.next, __typeof__(*_iter), _m)) \ /** + * c_list_flush() - flush all entries from a list + * @list: list to flush + * + * This unlinks all entries from the given list @list and reinitializes their + * link-nodes via C_LIST_INIT(). + * + * Note that the entries are not modified in any other way, nor is their memory + * released. This function just unlinks them and resets all the list nodes. It + * is particularly useful with temporary lists on the stack in combination with + * the GCC-extension __attribute__((__cleanup__(arg))). + */ +static inline void c_list_flush(CList *list) { + CList *iter, *safe; + + c_list_for_each_safe_unlink(iter, safe, list) + /* empty */ ; +} + +/** * c_list_length() - return number of linked entries, excluding the head * @list: list to operate on * |