From: Max Kellermann <max.kellermann@ionos.com>
To: linux-kernel@vger.kernel.org
Cc: Max Kellermann <max.kellermann@ionos.com>
Subject: [PATCH v4 11/35] percpu_counter.h: move declarations to percpu_counter_types.h
Date: Mon, 12 Feb 2024 00:14:54 +0100 [thread overview]
Message-ID: <20240211231518.349442-12-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>
---
include/linux/backing-dev-defs.h | 2 +-
include/linux/flex_proportions.h | 2 +-
include/linux/ipc_namespace.h | 2 +-
include/linux/mm_types.h | 3 ++-
include/linux/percpu_counter.h | 17 +------------
include/linux/percpu_counter_types.h | 37 ++++++++++++++++++++++++++++
include/linux/sched/user.h | 2 +-
include/linux/shmem_fs.h | 2 +-
kernel/user.c | 1 +
lib/flex_proportions.c | 1 +
10 files changed, 47 insertions(+), 22 deletions(-)
create mode 100644 include/linux/percpu_counter_types.h
diff --git a/include/linux/backing-dev-defs.h b/include/linux/backing-dev-defs.h
index 68fdec049456..720a88bb3513 100644
--- a/include/linux/backing-dev-defs.h
+++ b/include/linux/backing-dev-defs.h
@@ -6,7 +6,7 @@
#include <linux/radix-tree.h>
#include <linux/rbtree_types.h>
#include <linux/spinlock_types.h>
-#include <linux/percpu_counter.h>
+#include <linux/percpu_counter_types.h>
#include <linux/percpu-refcount.h>
#include <linux/flex_proportions.h>
#include <linux/timer_types.h>
diff --git a/include/linux/flex_proportions.h b/include/linux/flex_proportions.h
index 35204b64addf..df9017a61046 100644
--- a/include/linux/flex_proportions.h
+++ b/include/linux/flex_proportions.h
@@ -8,7 +8,7 @@
#ifndef _LINUX_FLEX_PROPORTIONS_H
#define _LINUX_FLEX_PROPORTIONS_H
-#include <linux/percpu_counter.h>
+#include <linux/percpu_counter_types.h>
#include <linux/spinlock_types.h>
#include <linux/seqlock_types.h>
#include <linux/gfp_types.h>
diff --git a/include/linux/ipc_namespace.h b/include/linux/ipc_namespace.h
index a0011b6cd5d1..7c758ab565fe 100644
--- a/include/linux/ipc_namespace.h
+++ b/include/linux/ipc_namespace.h
@@ -11,7 +11,7 @@
#include <linux/refcount.h>
#include <linux/rhashtable-types.h>
#include <linux/sysctl.h>
-#include <linux/percpu_counter.h>
+#include <linux/percpu_counter_types.h>
struct user_namespace;
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
index 54caee378e77..a88219770c82 100644
--- a/include/linux/mm_types.h
+++ b/include/linux/mm_types.h
@@ -19,7 +19,8 @@
#include <linux/page-flags-layout.h>
#include <linux/workqueue_types.h>
#include <linux/seqlock_types.h>
-#include <linux/percpu_counter.h>
+#include <linux/percpu_counter_types.h>
+#include <linux/percpu.h>
#include <asm/mmu.h>
diff --git a/include/linux/percpu_counter.h b/include/linux/percpu_counter.h
index 8d45785b3448..bec5e7cdd476 100644
--- a/include/linux/percpu_counter.h
+++ b/include/linux/percpu_counter.h
@@ -7,26 +7,15 @@
* WARNING: these things are HUGE. 4 kbytes per counter on 32-way P4.
*/
-#include <linux/spinlock_types.h>
-#include <linux/list.h>
+#include <linux/percpu_counter_types.h>
#include <linux/threads.h>
#include <linux/percpu.h>
-#include <linux/types.h>
/* percpu_counter batch for local add or sub */
#define PERCPU_COUNTER_LOCAL_BATCH INT_MAX
#ifdef CONFIG_SMP
-struct percpu_counter {
- raw_spinlock_t lock;
- s64 count;
-#ifdef CONFIG_HOTPLUG_CPU
- struct list_head list; /* All percpu_counters are on a list */
-#endif
- s32 __percpu *counters;
-};
-
extern int percpu_counter_batch;
int __percpu_counter_init_many(struct percpu_counter *fbc, s64 amount,
@@ -131,10 +120,6 @@ static inline bool percpu_counter_initialized(struct percpu_counter *fbc)
#else /* !CONFIG_SMP */
-struct percpu_counter {
- s64 count;
-};
-
static inline int percpu_counter_init_many(struct percpu_counter *fbc,
s64 amount, gfp_t gfp,
u32 nr_counters)
diff --git a/include/linux/percpu_counter_types.h b/include/linux/percpu_counter_types.h
new file mode 100644
index 000000000000..faccd9869a5a
--- /dev/null
+++ b/include/linux/percpu_counter_types.h
@@ -0,0 +1,37 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _LINUX_PERCPU_COUNTER_TYPES_H
+#define _LINUX_PERCPU_COUNTER_TYPES_H
+/*
+ * A simple "approximate counter" for use in ext2 and ext3 superblocks.
+ *
+ * WARNING: these things are HUGE. 4 kbytes per counter on 32-way P4.
+ */
+
+#include <linux/types.h>
+
+#ifdef CONFIG_SMP
+
+#include <linux/spinlock_types.h>
+
+#ifdef CONFIG_HOTPLUG_CPU
+#include <linux/list.h>
+#endif
+
+struct percpu_counter {
+ raw_spinlock_t lock;
+ s64 count;
+#ifdef CONFIG_HOTPLUG_CPU
+ struct list_head list; /* All percpu_counters are on a list */
+#endif
+ s32 __percpu *counters;
+};
+
+#else /* !CONFIG_SMP */
+
+struct percpu_counter {
+ s64 count;
+};
+
+#endif /* CONFIG_SMP */
+
+#endif /* _LINUX_PERCPU_COUNTER_TYPES_H */
diff --git a/include/linux/sched/user.h b/include/linux/sched/user.h
index 671ecee08d23..913da0aba05c 100644
--- a/include/linux/sched/user.h
+++ b/include/linux/sched/user.h
@@ -4,7 +4,7 @@
#include <linux/uidgid_types.h>
#include <linux/atomic.h>
-#include <linux/percpu_counter.h>
+#include <linux/percpu_counter_types.h>
#include <linux/refcount.h>
#include <linux/ratelimit_types.h>
diff --git a/include/linux/shmem_fs.h b/include/linux/shmem_fs.h
index 2caa6b86106a..1d7e56eab60f 100644
--- a/include/linux/shmem_fs.h
+++ b/include/linux/shmem_fs.h
@@ -6,7 +6,7 @@
#include <linux/swap.h>
#include <linux/mempolicy.h>
#include <linux/pagemap.h>
-#include <linux/percpu_counter.h>
+#include <linux/percpu_counter_types.h>
#include <linux/xattr.h>
#include <linux/fs_parser.h>
#include <linux/userfaultfd_k.h>
diff --git a/kernel/user.c b/kernel/user.c
index 28da71ea1e74..6c8b818419f8 100644
--- a/kernel/user.c
+++ b/kernel/user.c
@@ -22,6 +22,7 @@
#include <linux/proc_ns.h>
#include <linux/ratelimit.h>
#include <linux/uidgid.h>
+#include <linux/percpu_counter.h>
#if IS_ENABLED(CONFIG_BINFMT_MISC)
struct binfmt_misc init_binfmt_misc = {
diff --git a/lib/flex_proportions.c b/lib/flex_proportions.c
index 7749a48428e5..1d5e1e0bdbbe 100644
--- a/lib/flex_proportions.c
+++ b/lib/flex_proportions.c
@@ -36,6 +36,7 @@
#include <linux/flex_proportions.h>
#include <linux/log2.h>
#include <linux/math64.h>
+#include <linux/percpu_counter.h>
#include <linux/seqlock.h>
int fprop_global_init(struct fprop_global *p, gfp_t gfp)
--
2.39.2
next prev parent reply other threads:[~2024-02-11 23:15 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 ` Max Kellermann [this message]
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 ` [PATCH v4 28/35] radix-tree.h: move declarations to radix-tree_types.h Max Kellermann
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-12-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.