From: Rusty Russell <rusty@rustcorp.com.au>
To: linux-kernel@vger.kernel.org
Cc: Andrew Morton <akpm@linux-foundation.org>,
Al Viro <viro@zeniv.linux.org.uk>,
Linus Torvalds <torvalds@linux-foundation.org>
Subject: [PATCH 3/6] typesafe: Convert stop_machine
Date: Mon, 21 Apr 2008 09:05:32 +1000 [thread overview]
Message-ID: <200804210905.33090.rusty@rustcorp.com.au> (raw)
In-Reply-To: <200804210901.20229.rusty@rustcorp.com.au>
Straightforward conversion of stop_machine_run.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
---
include/linux/stop_machine.h | 12 +++--
kernel/stop_machine.c | 89 ++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 95 insertions(+), 6 deletions(-)
diff -r 103cfcb193b5 include/linux/stop_machine.h
--- a/include/linux/stop_machine.h Mon Apr 07 15:39:49 2008 +1000
+++ b/include/linux/stop_machine.h Mon Apr 07 15:44:29 2008 +1000
@@ -5,9 +5,9 @@
(and more). So the "read" side to such a lock is anything which
diables preeempt. */
#include <linux/cpu.h>
+#include <linux/compiler.h>
#include <asm/system.h>
-#if defined(CONFIG_STOP_MACHINE) && defined(CONFIG_SMP)
/**
* stop_machine_run: freeze the machine on all CPUs and run this function
* @fn: the function to run
@@ -21,7 +21,11 @@
*
* This can be thought of as a very heavy write lock, equivalent to
* grabbing every spinlock in the kernel. */
-int stop_machine_run(int (*fn)(void *), void *data, unsigned int cpu);
+#define stop_machine_run(fn, data, cpu) \
+ stop_machine_run_notype(typesafe_cb(int, (fn), (data)), (data), (cpu))
+
+#if defined(CONFIG_STOP_MACHINE) && defined(CONFIG_SMP)
+int stop_machine_run_notype(int (*fn)(void *), void *data, unsigned int cpu);
/**
* __stop_machine_run: freeze the machine on all CPUs and run this function
@@ -38,8 +42,8 @@ struct task_struct *__stop_machine_run(i
#else
-static inline int stop_machine_run(int (*fn)(void *), void *data,
- unsigned int cpu)
+static inline int stop_machine_run_notype(int (*fn)(void *), void *data,
+ unsigned int cpu)
{
int ret;
local_irq_disable();
diff -r 103cfcb193b5 kernel/stop_machine.c
--- a/kernel/stop_machine.c Mon Apr 07 15:39:49 2008 +1000
+++ b/kernel/stop_machine.c Mon Apr 07 15:44:29 2008 +1000
@@ -197,7 +197,7 @@ struct task_struct *__stop_machine_run(i
return p;
}
-int stop_machine_run(int (*fn)(void *), void *data, unsigned int cpu)
+int stop_machine_run_notype(int (*fn)(void *), void *data, unsigned int cpu)
{
struct task_struct *p;
int ret;
@@ -213,4 +213,4 @@ int stop_machine_run(int (*fn)(void *),
return ret;
}
-EXPORT_SYMBOL_GPL(stop_machine_run);
+EXPORT_SYMBOL_GPL(stop_machine_run_notype);
next prev parent reply other threads:[~2008-04-20 23:05 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-20 22:58 [PATCH 0/6] typesafe callbacks Rusty Russell
2008-04-20 23:00 ` [PATCH 1/6] cast_if_type: allow macros functions which take more than one type Rusty Russell
2008-04-20 23:01 ` [PATCH 2/6] typesafe_cb: wrappers for typesafe callbacks Rusty Russell
2008-04-20 23:05 ` Rusty Russell [this message]
2008-04-20 23:07 ` [PATCH 4/6] typesafe: kthread_create and kthread_run Rusty Russell
2008-04-20 23:09 ` [PATCH 5/6] typesafe: request_irq and devm_request_irq Rusty Russell
2008-04-20 23:10 ` [PATCH 6/6] typesafe: TIMER_INITIALIZER and setup_timer Rusty Russell
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=200804210905.33090.rusty@rustcorp.com.au \
--to=rusty@rustcorp.com.au \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
--cc=viro@zeniv.linux.org.uk \
/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.