aboutsummaryrefslogtreecommitdiff
path: root/ccan
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2016-07-24 09:26:57 +1000
committerStewart Smith <stewart@linux.vnet.ibm.com>2016-08-18 16:04:26 +1000
commitadc97f5ffcaeb6781370eb805619931581dad391 (patch)
tree8f559c41b43a24616f76fbd17272b29e34fa4d62 /ccan
parent400a91f854c4cfbfeeae03bdb728aaf3437e1371 (diff)
downloadskiboot-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.h15
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.
*