diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2016-07-24 09:26:57 +1000 |
---|---|---|
committer | Stewart Smith <stewart@linux.vnet.ibm.com> | 2016-08-18 16:04:26 +1000 |
commit | adc97f5ffcaeb6781370eb805619931581dad391 (patch) | |
tree | 8f559c41b43a24616f76fbd17272b29e34fa4d62 /ccan | |
parent | 400a91f854c4cfbfeeae03bdb728aaf3437e1371 (diff) | |
download | skiboot-adc97f5ffcaeb6781370eb805619931581dad391.zip skiboot-adc97f5ffcaeb6781370eb805619931581dad391.tar.gz skiboot-adc97f5ffcaeb6781370eb805619931581dad391.tar.bz2 |
ccan/list: Add list_empty_nocheck
This is the same as list_empty but without the debug checks. This is
useful when wanting to check for an empty list without locks held,
potentially racing with addition/removal, which can be a valid thing
to do under some circumstances.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'ccan')
-rw-r--r-- | ccan/list/list.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/ccan/list/list.h b/ccan/list/list.h index 646959e..7cd3a83 100644 --- a/ccan/list/list.h +++ b/ccan/list/list.h @@ -218,6 +218,21 @@ static inline bool list_empty(const struct list_head *h) } /** + * list_empty_nocheck - is a list empty? + * @h: the list_head + * + * If the list is empty, returns true. This doesn't perform any + * debug check for list consistency, so it can be called without + * locks, racing with the list being modified. This is ok for + * checks where an incorrect result is not an issue (optimized + * bail out path for example). + */ +static inline bool list_empty_nocheck(const struct list_head *h) +{ + return h->n.next == &h->n; +} + +/** * list_del - delete an entry from an (unknown) linked list. * @n: the list_node to delete from the list. * |