All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tejun Heo <tj@kernel.org>
To: cl@linux-foundation.org
Cc: linux-kernel@vger.kernel.org, Tejun Heo <tj@kernel.org>
Subject: [PATCH 04/12] percpu: move accessors from include/linux/percpu.h to percpu-defs.h
Date: Thu, 12 Jun 2014 12:23:21 -0400	[thread overview]
Message-ID: <1402590209-31610-5-git-send-email-tj@kernel.org> (raw)
In-Reply-To: <1402590209-31610-1-git-send-email-tj@kernel.org>

include/linux/percpu-defs.h is gonna host all accessors and operations
so that arch headers can make use of them too without worrying about
circular dependency through include/linux/percpu.h.

This patch moves the following accessors from include/linux/percpu.h
to include/linux/percpu-defs.h.

* get/put_cpu_var()
* get/put_cpu_ptr()
* per_cpu_ptr()

This is pure reorgniazation.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Christoph Lameter <cl@linux-foundation.org>
---
 include/linux/percpu-defs.h | 32 ++++++++++++++++++++++++++++++++
 include/linux/percpu.h      | 37 -------------------------------------
 2 files changed, 32 insertions(+), 37 deletions(-)

diff --git a/include/linux/percpu-defs.h b/include/linux/percpu-defs.h
index 55e04e9..f25bb94 100644
--- a/include/linux/percpu-defs.h
+++ b/include/linux/percpu-defs.h
@@ -261,5 +261,37 @@
 /* keep until we have removed all uses of __this_cpu_ptr */
 #define __this_cpu_ptr(ptr)	raw_cpu_ptr(ptr)
 
+/*
+ * Must be an lvalue. Since @var must be a simple identifier,
+ * we force a syntax error here if it isn't.
+ */
+#define get_cpu_var(var) (*({				\
+	preempt_disable();				\
+	this_cpu_ptr(&var); }))
+
+/*
+ * The weird & is necessary because sparse considers (void)(var) to be
+ * a direct dereference of percpu variable (var).
+ */
+#define put_cpu_var(var) do {				\
+	(void)&(var);					\
+	preempt_enable();				\
+} while (0)
+
+#define get_cpu_ptr(var) ({				\
+	preempt_disable();				\
+	this_cpu_ptr(var); })
+
+#define put_cpu_ptr(var) do {				\
+	(void)(var);					\
+	preempt_enable();				\
+} while (0)
+
+#ifdef CONFIG_SMP
+#define per_cpu_ptr(ptr, cpu)	SHIFT_PERCPU_PTR((ptr), per_cpu_offset((cpu)))
+#else
+#define per_cpu_ptr(ptr, cpu)	({ (void)(cpu); VERIFY_PERCPU_PTR((ptr)); })
+#endif
+
 #endif /* __ASSEMBLY__ */
 #endif /* _LINUX_PERCPU_DEFS_H */
diff --git a/include/linux/percpu.h b/include/linux/percpu.h
index 8419053..97b2079 100644
--- a/include/linux/percpu.h
+++ b/include/linux/percpu.h
@@ -23,32 +23,6 @@
 	 PERCPU_MODULE_RESERVE)
 #endif
 
-/*
- * Must be an lvalue. Since @var must be a simple identifier,
- * we force a syntax error here if it isn't.
- */
-#define get_cpu_var(var) (*({				\
-	preempt_disable();				\
-	this_cpu_ptr(&var); }))
-
-/*
- * The weird & is necessary because sparse considers (void)(var) to be
- * a direct dereference of percpu variable (var).
- */
-#define put_cpu_var(var) do {				\
-	(void)&(var);					\
-	preempt_enable();				\
-} while (0)
-
-#define get_cpu_ptr(var) ({				\
-	preempt_disable();				\
-	this_cpu_ptr(var); })
-
-#define put_cpu_ptr(var) do {				\
-	(void)(var);					\
-	preempt_enable();				\
-} while (0)
-
 /* minimum unit size, also is the maximum supported allocation size */
 #define PCPU_MIN_UNIT_SIZE		PFN_ALIGN(32 << 10)
 
@@ -140,17 +114,6 @@ extern int __init pcpu_page_first_chunk(size_t reserved_size,
 				pcpu_fc_populate_pte_fn_t populate_pte_fn);
 #endif
 
-/*
- * Use this to get to a cpu's version of the per-cpu object
- * dynamically allocated. Non-atomic access to the current CPU's
- * version should probably be combined with get_cpu()/put_cpu().
- */
-#ifdef CONFIG_SMP
-#define per_cpu_ptr(ptr, cpu)	SHIFT_PERCPU_PTR((ptr), per_cpu_offset((cpu)))
-#else
-#define per_cpu_ptr(ptr, cpu)	({ (void)(cpu); VERIFY_PERCPU_PTR((ptr)); })
-#endif
-
 extern void __percpu *__alloc_reserved_percpu(size_t size, size_t align);
 extern bool is_kernel_percpu_address(unsigned long addr);
 
-- 
1.9.3


  parent reply	other threads:[~2014-06-12 16:28 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-12 16:23 [PATCHSET percpu/for-3.17] percpu: clean up percpu accessor and operation definitions Tejun Heo
2014-06-12 16:23 ` [PATCH 01/12] percpu: disallow archs from overriding SHIFT_PERCPU_PTR() Tejun Heo
2014-06-13  1:58   ` Christoph Lameter
2014-06-12 16:23 ` [PATCH 02/12] percpu: introduce arch_raw_cpu_ptr() Tejun Heo
2014-06-13 17:10   ` Christoph Lameter
2014-06-13 18:24     ` Tejun Heo
2014-06-12 16:23 ` [PATCH 03/12] percpu: include/asm-generic/percpu.h should contain only arch-overridable parts Tejun Heo
2014-06-13 17:12   ` Christoph Lameter
2014-06-12 16:23 ` Tejun Heo [this message]
2014-06-13 17:13   ` [PATCH 04/12] percpu: move accessors from include/linux/percpu.h to percpu-defs.h Christoph Lameter
2014-06-12 16:23 ` [PATCH 05/12] percpu: reorganize include/linux/percpu-defs.h Tejun Heo
2014-06-13 17:16   ` Christoph Lameter
2014-06-13 18:25     ` Tejun Heo
2014-06-13 18:55       ` Christoph Lameter
2014-06-16 15:31         ` Christoph Lameter
2014-06-18 18:16           ` Tejun Heo
2014-06-19 21:07             ` Christoph Lameter
2014-06-12 16:23 ` [PATCH 06/12] percpu: only allow sized arch overrides for {raw|this}_cpu_*() ops Tejun Heo
2014-06-13 17:18   ` Christoph Lameter
2014-06-12 16:23 ` [PATCH 07/12] percpu: move generic {raw|this}_cpu_*_N() definitions to include/asm-generic/percpu.h Tejun Heo
2014-06-13 17:19   ` Christoph Lameter
2014-06-12 16:23 ` [PATCH 08/12] percpu: move {raw|this}_cpu_*() definitions to include/linux/percpu-defs.h Tejun Heo
2014-06-13 17:20   ` Christoph Lameter
2014-06-12 16:23 ` [PATCH 09/12] percpu: reorder macros in percpu header files Tejun Heo
2014-06-13 17:21   ` Christoph Lameter
2014-06-12 16:23 ` [PATCH 10/12] percpu: use raw_cpu_*() to define __this_cpu_*() Tejun Heo
2014-06-13 17:22   ` Christoph Lameter
2014-06-12 16:23 ` [PATCH 11/12] percpu: preffity percpu header files Tejun Heo
2014-06-13 17:23   ` Christoph Lameter
2014-06-12 16:23 ` [PATCH 12/12] percpu: invoke __verify_pcpu_ptr() from the generic part of accessors and operations Tejun Heo
2014-06-17 23:20   ` [PATCH UPDATED " Tejun Heo
2014-06-17 23:22 ` [PATCHSET percpu/for-3.17] percpu: clean up percpu accessor and operation definitions Tejun Heo
2014-06-19 21:05   ` Christoph Lameter
2014-06-19 21:09     ` Tejun Heo

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=1402590209-31610-5-git-send-email-tj@kernel.org \
    --to=tj@kernel.org \
    --cc=cl@linux-foundation.org \
    --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.