summaryrefslogtreecommitdiffstats
path: root/include/linux/xarray.h
diff options
context:
space:
mode:
authorThomas Zimmermann <tzimmermann@suse.de>2022-01-26 09:40:24 +0100
committerThomas Zimmermann <tzimmermann@suse.de>2022-01-26 09:40:24 +0100
commit48ee4835b73c48590d05a54730dc8037ebd39d3b (patch)
tree84180182d393033da452823cb974880a368e1766 /include/linux/xarray.h
parent5ec1cebd59300ddd26dbaa96c17c508764eef911 (diff)
parente783362eb54cd99b2cac8b3a9aeac942e6f6ac07 (diff)
downloadcachepc-linux-48ee4835b73c48590d05a54730dc8037ebd39d3b.tar.gz
cachepc-linux-48ee4835b73c48590d05a54730dc8037ebd39d3b.zip
Merge drm/drm-fixes into drm-misc-fixes
Backmerging drm/drm-fixes into drm-misc-fixes for v5.17-rc1. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Diffstat (limited to 'include/linux/xarray.h')
-rw-r--r--include/linux/xarray.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/include/linux/xarray.h b/include/linux/xarray.h
index a91e3d90df8a..d6d5da6ed735 100644
--- a/include/linux/xarray.h
+++ b/include/linux/xarray.h
@@ -1581,6 +1581,24 @@ static inline void xas_set(struct xa_state *xas, unsigned long index)
}
/**
+ * xas_advance() - Skip over sibling entries.
+ * @xas: XArray operation state.
+ * @index: Index of last sibling entry.
+ *
+ * Move the operation state to refer to the last sibling entry.
+ * This is useful for loops that normally want to see sibling
+ * entries but sometimes want to skip them. Use xas_set() if you
+ * want to move to an index which is not part of this entry.
+ */
+static inline void xas_advance(struct xa_state *xas, unsigned long index)
+{
+ unsigned char shift = xas_is_node(xas) ? xas->xa_node->shift : 0;
+
+ xas->xa_index = index;
+ xas->xa_offset = (index >> shift) & XA_CHUNK_MASK;
+}
+
+/**
* xas_set_order() - Set up XArray operation state for a multislot entry.
* @xas: XArray operation state.
* @index: Target of the operation.