All of lore.kernel.org
 help / color / mirror / Atom feed
From: Max Kellermann <max.kellermann@ionos.com>
To: linux-kernel@vger.kernel.org
Cc: Max Kellermann <max.kellermann@ionos.com>
Subject: [PATCH v4 28/35] radix-tree.h: move declarations to radix-tree_types.h
Date: Mon, 12 Feb 2024 00:15:11 +0100	[thread overview]
Message-ID: <20240211231518.349442-29-max.kellermann@ionos.com> (raw)
In-Reply-To: <20240211231518.349442-1-max.kellermann@ionos.com>

By providing declarations in a lean header, we can reduce header
dependencies.

Signed-off-by: Max Kellermann <max.kellermann@ionos.com>
---
 drivers/usb/cdns3/cdnsp-mem.c    |  1 +
 include/linux/backing-dev-defs.h |  2 +-
 include/linux/iocontext.h        |  2 +-
 include/linux/irqdomain.h        |  2 +-
 include/linux/mlx4/device.h      |  2 +-
 include/linux/radix-tree.h       | 44 +---------------------------
 include/linux/radix-tree_types.h | 50 ++++++++++++++++++++++++++++++++
 kernel/dma/debug.c               |  1 +
 kernel/irq/irqdomain.c           |  1 +
 9 files changed, 58 insertions(+), 47 deletions(-)
 create mode 100644 include/linux/radix-tree_types.h

diff --git a/drivers/usb/cdns3/cdnsp-mem.c b/drivers/usb/cdns3/cdnsp-mem.c
index 97866bfb2da9..bab13f8a0b62 100644
--- a/drivers/usb/cdns3/cdnsp-mem.c
+++ b/drivers/usb/cdns3/cdnsp-mem.c
@@ -12,6 +12,7 @@
 
 #include <linux/dma-mapping.h>
 #include <linux/dmapool.h>
+#include <linux/radix-tree.h>
 #include <linux/slab.h>
 #include <linux/usb.h>
 
diff --git a/include/linux/backing-dev-defs.h b/include/linux/backing-dev-defs.h
index ffdd82f2f3e6..a48509f21b71 100644
--- a/include/linux/backing-dev-defs.h
+++ b/include/linux/backing-dev-defs.h
@@ -3,7 +3,7 @@
 #define __LINUX_BACKING_DEV_DEFS_H
 
 #include <linux/list.h>
-#include <linux/radix-tree.h>
+#include <linux/radix-tree_types.h>
 #include <linux/rbtree_types.h>
 #include <linux/spinlock_types.h>
 #include <linux/percpu_counter_types.h>
diff --git a/include/linux/iocontext.h b/include/linux/iocontext.h
index a05d8a45cce5..aa1409bd9edd 100644
--- a/include/linux/iocontext.h
+++ b/include/linux/iocontext.h
@@ -2,7 +2,7 @@
 #ifndef IOCONTEXT_H
 #define IOCONTEXT_H
 
-#include <linux/radix-tree.h>
+#include <linux/radix-tree_types.h>
 #include <linux/rcupdate.h>
 #include <linux/workqueue_types.h>
 
diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h
index 0503bd4ea55b..c439d47b37a9 100644
--- a/include/linux/irqdomain.h
+++ b/include/linux/irqdomain.h
@@ -35,7 +35,7 @@
 #include <linux/irqhandler.h>
 #include <linux/of.h>
 #include <linux/mutex_types.h>
-#include <linux/radix-tree.h>
+#include <linux/radix-tree_types.h>
 
 struct device_node;
 struct fwnode_handle;
diff --git a/include/linux/mlx4/device.h b/include/linux/mlx4/device.h
index 18d71b808bc2..e354c967a21d 100644
--- a/include/linux/mlx4/device.h
+++ b/include/linux/mlx4/device.h
@@ -37,7 +37,7 @@
 #include <linux/if_ether.h>
 #include <linux/pci.h>
 #include <linux/completion_types.h>
-#include <linux/radix-tree.h>
+#include <linux/radix-tree_types.h>
 #include <linux/cpu_rmap.h>
 #include <linux/crash_dump.h>
 
diff --git a/include/linux/radix-tree.h b/include/linux/radix-tree.h
index 231c526ec9b8..eb28f5be02cd 100644
--- a/include/linux/radix-tree.h
+++ b/include/linux/radix-tree.h
@@ -8,6 +8,7 @@
 #ifndef _LINUX_RADIX_TREE_H
 #define _LINUX_RADIX_TREE_H
 
+#include <linux/radix-tree_types.h>
 #include <linux/bitops.h>
 #include <linux/gfp_types.h>
 #include <linux/list.h>
@@ -20,10 +21,6 @@
 #include <linux/xarray.h>
 #include <linux/local_lock.h>
 
-/* Keep unconverted code working */
-#define radix_tree_root		xarray
-#define radix_tree_node		xa_node
-
 struct radix_tree_preload {
 	local_lock_t lock;
 	unsigned nr;
@@ -70,45 +67,6 @@ static inline bool radix_tree_is_internal_node(void *ptr)
 #define RADIX_TREE_MAX_PATH (DIV_ROUND_UP(RADIX_TREE_INDEX_BITS, \
 					  RADIX_TREE_MAP_SHIFT))
 
-/* The IDR tag is stored in the low bits of xa_flags */
-#define ROOT_IS_IDR	((__force gfp_t)4)
-/* The top bits of xa_flags are used to store the root tags */
-#define ROOT_TAG_SHIFT	(__GFP_BITS_SHIFT)
-
-#define RADIX_TREE_INIT(name, mask)	XARRAY_INIT(name, mask)
-
-#define RADIX_TREE(name, mask) \
-	struct radix_tree_root name = RADIX_TREE_INIT(name, mask)
-
-#define INIT_RADIX_TREE(root, mask) xa_init_flags(root, mask)
-
-static inline bool radix_tree_empty(const struct radix_tree_root *root)
-{
-	return root->xa_head == NULL;
-}
-
-/**
- * struct radix_tree_iter - radix tree iterator state
- *
- * @index:	index of current slot
- * @next_index:	one beyond the last index for this chunk
- * @tags:	bit-mask for tag-iterating
- * @node:	node that contains current slot
- *
- * This radix tree iterator works in terms of "chunks" of slots.  A chunk is a
- * subinterval of slots contained within one radix tree leaf node.  It is
- * described by a pointer to its first slot and a struct radix_tree_iter
- * which holds the chunk's position in the tree and its size.  For tagged
- * iteration radix_tree_iter also holds the slots' bit-mask for one chosen
- * radix tree tag.
- */
-struct radix_tree_iter {
-	unsigned long	index;
-	unsigned long	next_index;
-	unsigned long	tags;
-	struct radix_tree_node *node;
-};
-
 /**
  * Radix-tree synchronization
  *
diff --git a/include/linux/radix-tree_types.h b/include/linux/radix-tree_types.h
new file mode 100644
index 000000000000..d0d4e051a424
--- /dev/null
+++ b/include/linux/radix-tree_types.h
@@ -0,0 +1,50 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+#ifndef _LINUX_RADIX_TREE_TYPES_H
+#define _LINUX_RADIX_TREE_TYPES_H
+
+#include <linux/xarray_types.h>
+
+/* Keep unconverted code working */
+#define radix_tree_root		xarray
+#define radix_tree_node		xa_node
+
+#define RADIX_TREE_INIT(name, mask)	XARRAY_INIT(name, mask)
+
+#define RADIX_TREE(name, mask) \
+	struct radix_tree_root name = RADIX_TREE_INIT(name, mask)
+
+#define INIT_RADIX_TREE(root, mask) xa_init_flags(root, mask)
+
+static inline bool radix_tree_empty(const struct radix_tree_root *root)
+{
+	return root->xa_head == NULL;
+}
+
+/**
+ * struct radix_tree_iter - radix tree iterator state
+ *
+ * @index:	index of current slot
+ * @next_index:	one beyond the last index for this chunk
+ * @tags:	bit-mask for tag-iterating
+ * @node:	node that contains current slot
+ *
+ * This radix tree iterator works in terms of "chunks" of slots.  A chunk is a
+ * subinterval of slots contained within one radix tree leaf node.  It is
+ * described by a pointer to its first slot and a struct radix_tree_iter
+ * which holds the chunk's position in the tree and its size.  For tagged
+ * iteration radix_tree_iter also holds the slots' bit-mask for one chosen
+ * radix tree tag.
+ */
+struct radix_tree_iter {
+	unsigned long	index;
+	unsigned long	next_index;
+	unsigned long	tags;
+	struct radix_tree_node *node;
+};
+
+/* The IDR tag is stored in the low bits of xa_flags */
+#define ROOT_IS_IDR	((__force gfp_t)4)
+/* The top bits of xa_flags are used to store the root tags */
+#define ROOT_TAG_SHIFT	(__GFP_BITS_SHIFT)
+
+#endif /* _LINUX_RADIX_TREE_TYPES_H */
diff --git a/kernel/dma/debug.c b/kernel/dma/debug.c
index e7e236599307..1e892a5b0d93 100644
--- a/kernel/dma/debug.c
+++ b/kernel/dma/debug.c
@@ -20,6 +20,7 @@
 #include <linux/uaccess.h>
 #include <linux/export.h>
 #include <linux/device.h>
+#include <linux/radix-tree.h>
 #include <linux/types.h>
 #include <linux/sched.h>
 #include <linux/ctype.h>
diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c
index d3431093c40d..d3313b7a22c8 100644
--- a/kernel/irq/irqdomain.c
+++ b/kernel/irq/irqdomain.c
@@ -14,6 +14,7 @@
 #include <linux/of.h>
 #include <linux/of_address.h>
 #include <linux/of_irq.h>
+#include <linux/radix-tree.h>
 #include <linux/sprintf.h>
 #include <linux/topology.h>
 #include <linux/seq_file.h>
-- 
2.39.2


  parent reply	other threads:[~2024-02-11 23:16 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-11 23:14 [PATCH v4 00/35] Fast kernel headers: reduce header dependencies Max Kellermann
2024-02-11 23:14 ` [PATCH v4 01/35] include: add missing includes Max Kellermann
2024-02-11 23:14 ` [PATCH v4 02/35] include: remove unnecessary #include directives Max Kellermann
2024-02-12  9:15   ` kernel test robot
2024-02-12 12:41   ` kernel test robot
2024-02-11 23:14 ` [PATCH v4 03/35] include: reduce header dependencies by using "*_types.h" Max Kellermann
2024-02-12  4:15   ` kernel test robot
2024-02-12  5:18   ` kernel test robot
2024-02-12  5:18   ` kernel test robot
2024-02-11 23:14 ` [PATCH v4 04/35] workqueue.h: move struct delayed_work to workqueue_types.h Max Kellermann
2024-02-11 23:14 ` [PATCH v4 05/35] kref.h: move declarations to kref_types.h Max Kellermann
2024-02-11 23:14 ` [PATCH v4 06/35] kobject.h: move declarations to kobject_types.h Max Kellermann
2024-02-11 23:14 ` [PATCH v4 07/35] sysfs.h: move declarations to sysfs_types.h Max Kellermann
2024-02-11 23:14 ` [PATCH v4 08/35] maple_tree.h: move declarations to maple_tree_types.h Max Kellermann
2024-02-11 23:14 ` [PATCH v4 09/35] rwsem.h: move declarations to rwsem_types.h Max Kellermann
2024-02-11 23:14 ` [PATCH v4 10/35] uprobes.h: move declarations to uprobes_types.h Max Kellermann
2024-02-11 23:14 ` [PATCH v4 11/35] percpu_counter.h: move declarations to percpu_counter_types.h Max Kellermann
2024-02-11 23:14 ` [PATCH v4 12/35] bvec.h: move declarations to bvec_types.h Max Kellermann
2024-02-11 23:14 ` [PATCH v4 13/35] wait.h: move declarations to wait_types.h Max Kellermann
2024-02-11 23:14 ` [PATCH v4 14/35] swait.h: move declarations to swait_types.h Max Kellermann
2024-02-11 23:14 ` [PATCH v4 15/35] completion.h: move declarations to completion_types.h Max Kellermann
2024-02-11 23:14 ` [PATCH v4 16/35] device.h: move declarations to device_types.h Max Kellermann
2024-02-11 23:15 ` [PATCH v4 17/35] xarray.h: move declarations to xarray_types.h Max Kellermann
2024-02-11 23:15 ` [PATCH v4 18/35] blkdev.h: move blk_op_is_passthrough() to blk_types.h Max Kellermann
2024-02-11 23:15 ` [PATCH v4 19/35] bio.h: move bio_has_data() and bio_no_advance_iter() " Max Kellermann
2024-02-11 23:15 ` [PATCH v4 20/35] bio.h: move declarations to bio_types.h Max Kellermann
2024-02-11 23:15 ` [PATCH v4 21/35] percpu-refcount.h: move declarations to percpu-refcount_types.h Max Kellermann
2024-02-11 23:15 ` [PATCH v4 22/35] blkdev.h: move declarations to blkdev_types.h Max Kellermann
2024-02-11 23:15 ` [PATCH v4 23/35] sbitmap.h: move declarations to sbitmap_types.h Max Kellermann
2024-02-11 23:15 ` [PATCH v4 24/35] list_lru.h: move declarations to list_lru_types.h Max Kellermann
2024-02-11 23:15 ` [PATCH v4 25/35] list_bl.h: move declarations to list_bl_types.h Max Kellermann
2024-02-11 23:15 ` [PATCH v4 26/35] percpu-rwsem.h: move declarations to percpu-rwsem_types.h Max Kellermann
2024-02-11 23:15 ` [PATCH v4 27/35] quota.h: move declarations to quota_types.h Max Kellermann
2024-02-11 23:15 ` Max Kellermann [this message]
2024-02-11 23:15 ` [PATCH v4 29/35] linux/random.h: reduce dependencies on linux/kernel.h Max Kellermann
2024-02-11 23:15 ` [PATCH v4 30/35] linux/kernel.h: move might_sleep(), ... to sched/debug_atomic_sleep.h Max Kellermann
2024-02-11 23:15 ` [PATCH v4 31/35] linux/kernel.h: move READ and WRITE to direction.h Max Kellermann
2024-02-11 23:15 ` [PATCH v4 32/35] linux/kernel.h: move VERIFY_OCTAL_PERMISSIONS() to octal_permissions.h Max Kellermann
2024-02-11 23:15 ` [PATCH v4 33/35] linux/kernel.h: move upper/lower_*_bits macros to wordpart.h Max Kellermann
2024-02-11 23:15 ` [PATCH v4 34/35] linux/kernel.h: move PTR_IF() to ptr_util.h Max Kellermann
2024-02-11 23:15 ` [PATCH v4 35/35] include: remove lots of unnecessary <linux/kernel.h> includes Max Kellermann
2024-02-12 13:43 ` [PATCH v4 00/35] Fast kernel headers: reduce header dependencies Jason Gunthorpe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240211231518.349442-29-max.kellermann@ionos.com \
    --to=max.kellermann@ionos.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.