* [patch 0/3] Tracepoints kill rcupdate header dependency
@ 2009-04-17 0:14 mathieu.desnoyers
2009-04-17 0:14 ` [patch 1/3] rcupdate header remove whitespace mathieu.desnoyers
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: mathieu.desnoyers @ 2009-04-17 0:14 UTC (permalink / raw)
To: Ingo Molnar, linux-kernel, Jeremy Fitzhardinge, Steven Rostedt
Here is a patch to remove the tracepoint rcupdate dependency by splitting the
read-side primitives of rcupdate.h into a sub rcupdate_defines.h header. That
should make, at least, pvops tracing easier.
It applies on top of current tip/tracing/ftrace tree.
Mathieu
--
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
^ permalink raw reply [flat|nested] 7+ messages in thread
* [patch 1/3] rcupdate header remove whitespace
2009-04-17 0:14 [patch 0/3] Tracepoints kill rcupdate header dependency mathieu.desnoyers
@ 2009-04-17 0:14 ` mathieu.desnoyers
2009-04-17 0:14 ` [patch 2/3] RCU move trace defines to rcupdate_defines.h mathieu.desnoyers
2009-04-17 0:14 ` [patch 3/3] tracepoints : remove rcupdate.h dependency mathieu.desnoyers
2 siblings, 0 replies; 7+ messages in thread
From: mathieu.desnoyers @ 2009-04-17 0:14 UTC (permalink / raw)
To: Ingo Molnar, linux-kernel, Jeremy Fitzhardinge, Steven Rostedt
Cc: Mathieu Desnoyers, Paul E. McKenney
[-- Attachment #1: rcupdate-header-remove-whitespace.patch --]
[-- Type: text/plain, Size: 934 bytes --]
Janitor-style whitespace cleanup. Will need to copy this header elsewhere
anyway.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
CC: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
---
include/linux/rcupdate.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: linux.trees.git/include/linux/rcupdate.h
===================================================================
--- linux.trees.git.orig/include/linux/rcupdate.h 2009-04-16 19:57:30.000000000 -0400
+++ linux.trees.git/include/linux/rcupdate.h 2009-04-16 19:57:35.000000000 -0400
@@ -18,7 +18,7 @@
* Copyright IBM Corporation, 2001
*
* Author: Dipankar Sarma <dipankar@in.ibm.com>
- *
+ *
* Based on the original work by Paul McKenney <paulmck@us.ibm.com>
* and inputs from Rusty Russell, Andrea Arcangeli and Andi Kleen.
* Papers:
--
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
^ permalink raw reply [flat|nested] 7+ messages in thread
* [patch 2/3] RCU move trace defines to rcupdate_defines.h
2009-04-17 0:14 [patch 0/3] Tracepoints kill rcupdate header dependency mathieu.desnoyers
2009-04-17 0:14 ` [patch 1/3] rcupdate header remove whitespace mathieu.desnoyers
@ 2009-04-17 0:14 ` mathieu.desnoyers
2009-04-17 0:43 ` Ingo Molnar
2009-04-17 0:14 ` [patch 3/3] tracepoints : remove rcupdate.h dependency mathieu.desnoyers
2 siblings, 1 reply; 7+ messages in thread
From: mathieu.desnoyers @ 2009-04-17 0:14 UTC (permalink / raw)
To: Ingo Molnar, linux-kernel, Jeremy Fitzhardinge, Steven Rostedt
Cc: Mathieu Desnoyers, Paul E. McKenney, Andrew Morton,
Christoph Hellwig
[-- Attachment #1: rcu-move-trace-defines-to-rcu_defines-header.patch --]
[-- Type: text/plain, Size: 12841 bytes --]
Given tracepoint.h need to include the minimal set of headers, split some
tracing-specific RCU defines from the global rcupdate.h header.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
CC: Jeremy Fitzhardinge <jeremy@goop.org>
CC: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
CC: Steven Rostedt <rostedt@goodmis.org>
CC: Ingo Molnar <mingo@elte.hu>
CC: Andrew Morton <akpm@linux-foundation.org>
CC: Christoph Hellwig <hch@lst.de>
---
include/linux/rcupdate.h | 127 ------------------------------
include/linux/rcupdate_defines.h | 163 +++++++++++++++++++++++++++++++++++++++
2 files changed, 164 insertions(+), 126 deletions(-)
Index: linux.trees.git/include/linux/rcupdate.h
===================================================================
--- linux.trees.git.orig/include/linux/rcupdate.h 2009-04-16 20:10:13.000000000 -0400
+++ linux.trees.git/include/linux/rcupdate.h 2009-04-16 20:10:36.000000000 -0400
@@ -40,6 +40,7 @@
#include <linux/seqlock.h>
#include <linux/lockdep.h>
#include <linux/completion.h>
+#include <linux/rcupdate_defines.h>
/**
* struct rcu_head - callback structure for use with RCU
@@ -70,132 +71,7 @@ extern int rcu_scheduler_active;
(ptr)->next = NULL; (ptr)->func = NULL; \
} while (0)
-/**
- * rcu_read_lock - mark the beginning of an RCU read-side critical section.
- *
- * When synchronize_rcu() is invoked on one CPU while other CPUs
- * are within RCU read-side critical sections, then the
- * synchronize_rcu() is guaranteed to block until after all the other
- * CPUs exit their critical sections. Similarly, if call_rcu() is invoked
- * on one CPU while other CPUs are within RCU read-side critical
- * sections, invocation of the corresponding RCU callback is deferred
- * until after the all the other CPUs exit their critical sections.
- *
- * Note, however, that RCU callbacks are permitted to run concurrently
- * with RCU read-side critical sections. One way that this can happen
- * is via the following sequence of events: (1) CPU 0 enters an RCU
- * read-side critical section, (2) CPU 1 invokes call_rcu() to register
- * an RCU callback, (3) CPU 0 exits the RCU read-side critical section,
- * (4) CPU 2 enters a RCU read-side critical section, (5) the RCU
- * callback is invoked. This is legal, because the RCU read-side critical
- * section that was running concurrently with the call_rcu() (and which
- * therefore might be referencing something that the corresponding RCU
- * callback would free up) has completed before the corresponding
- * RCU callback is invoked.
- *
- * RCU read-side critical sections may be nested. Any deferred actions
- * will be deferred until the outermost RCU read-side critical section
- * completes.
- *
- * It is illegal to block while in an RCU read-side critical section.
- */
-#define rcu_read_lock() __rcu_read_lock()
-
-/**
- * rcu_read_unlock - marks the end of an RCU read-side critical section.
- *
- * See rcu_read_lock() for more information.
- */
-
-/*
- * So where is rcu_write_lock()? It does not exist, as there is no
- * way for writers to lock out RCU readers. This is a feature, not
- * a bug -- this property is what provides RCU's performance benefits.
- * Of course, writers must coordinate with each other. The normal
- * spinlock primitives work well for this, but any other technique may be
- * used as well. RCU does not care how the writers keep out of each
- * others' way, as long as they do so.
- */
-#define rcu_read_unlock() __rcu_read_unlock()
-
-/**
- * rcu_read_lock_bh - mark the beginning of a softirq-only RCU critical section
- *
- * This is equivalent of rcu_read_lock(), but to be used when updates
- * are being done using call_rcu_bh(). Since call_rcu_bh() callbacks
- * consider completion of a softirq handler to be a quiescent state,
- * a process in RCU read-side critical section must be protected by
- * disabling softirqs. Read-side critical sections in interrupt context
- * can use just rcu_read_lock().
- *
- */
-#define rcu_read_lock_bh() __rcu_read_lock_bh()
-
-/*
- * rcu_read_unlock_bh - marks the end of a softirq-only RCU critical section
- *
- * See rcu_read_lock_bh() for more information.
- */
-#define rcu_read_unlock_bh() __rcu_read_unlock_bh()
-
-/**
- * rcu_read_lock_sched - mark the beginning of a RCU-classic critical section
- *
- * Should be used with either
- * - synchronize_sched()
- * or
- * - call_rcu_sched() and rcu_barrier_sched()
- * on the write-side to insure proper synchronization.
- */
-#define rcu_read_lock_sched() preempt_disable()
-#define rcu_read_lock_sched_notrace() preempt_disable_notrace()
-
-/*
- * rcu_read_unlock_sched - marks the end of a RCU-classic critical section
- *
- * See rcu_read_lock_sched for more information.
- */
-#define rcu_read_unlock_sched() preempt_enable()
-#define rcu_read_unlock_sched_notrace() preempt_enable_notrace()
-
-
-
-/**
- * rcu_dereference - fetch an RCU-protected pointer in an
- * RCU read-side critical section. This pointer may later
- * be safely dereferenced.
- *
- * Inserts memory barriers on architectures that require them
- * (currently only the Alpha), and, more importantly, documents
- * exactly which pointers are protected by RCU.
- */
-
-#define rcu_dereference(p) ({ \
- typeof(p) _________p1 = ACCESS_ONCE(p); \
- smp_read_barrier_depends(); \
- (_________p1); \
- })
-
-/**
- * rcu_assign_pointer - assign (publicize) a pointer to a newly
- * initialized structure that will be dereferenced by RCU read-side
- * critical sections. Returns the value assigned.
- *
- * Inserts memory barriers on architectures that require them
- * (pretty much all of them other than x86), and also prevents
- * the compiler from reordering the code that initializes the
- * structure after the pointer assignment. More importantly, this
- * call documents which pointers will be dereferenced by RCU read-side
- * code.
- */
-
-#define rcu_assign_pointer(p, v) \
- ({ \
- if (!__builtin_constant_p(v) || \
- ((v) != NULL)) \
- smp_wmb(); \
- (p) = (v); \
- })
+/* See linux/rcupdate_defines.h for read-side locking primitives */
/* Infrastructure to implement the synchronize_() primitives. */
Index: linux.trees.git/include/linux/rcupdate_defines.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux.trees.git/include/linux/rcupdate_defines.h 2009-04-16 20:10:18.000000000 -0400
@@ -0,0 +1,163 @@
+/*
+ * Read-Copy Update mechanism for mutual exclusion - read-side definitions
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Copyright IBM Corporation, 2001
+ *
+ * Author: Dipankar Sarma <dipankar@in.ibm.com>
+ *
+ * Based on the original work by Paul McKenney <paulmck@us.ibm.com>
+ * and inputs from Rusty Russell, Andrea Arcangeli and Andi Kleen.
+ * Papers:
+ * http://www.rdrop.com/users/paulmck/paper/rclockpdcsproof.pdf
+ * http://lse.sourceforge.net/locking/rclock_OLS.2001.05.01c.sc.pdf (OLS2001)
+ *
+ * For detailed explanation of Read-Copy Update mechanism see -
+ * http://lse.sourceforge.net/locking/rcupdate.html
+ *
+ */
+
+#ifndef __LINUX_RCUPDATE_DEFINES_H
+#define __LINUX_RCUPDATE_DEFINES_H
+
+/**
+ * rcu_read_lock - mark the beginning of an RCU read-side critical section.
+ *
+ * When synchronize_rcu() is invoked on one CPU while other CPUs
+ * are within RCU read-side critical sections, then the
+ * synchronize_rcu() is guaranteed to block until after all the other
+ * CPUs exit their critical sections. Similarly, if call_rcu() is invoked
+ * on one CPU while other CPUs are within RCU read-side critical
+ * sections, invocation of the corresponding RCU callback is deferred
+ * until after the all the other CPUs exit their critical sections.
+ *
+ * Note, however, that RCU callbacks are permitted to run concurrently
+ * with RCU read-side critical sections. One way that this can happen
+ * is via the following sequence of events: (1) CPU 0 enters an RCU
+ * read-side critical section, (2) CPU 1 invokes call_rcu() to register
+ * an RCU callback, (3) CPU 0 exits the RCU read-side critical section,
+ * (4) CPU 2 enters a RCU read-side critical section, (5) the RCU
+ * callback is invoked. This is legal, because the RCU read-side critical
+ * section that was running concurrently with the call_rcu() (and which
+ * therefore might be referencing something that the corresponding RCU
+ * callback would free up) has completed before the corresponding
+ * RCU callback is invoked.
+ *
+ * RCU read-side critical sections may be nested. Any deferred actions
+ * will be deferred until the outermost RCU read-side critical section
+ * completes.
+ *
+ * It is illegal to block while in an RCU read-side critical section.
+ */
+#define rcu_read_lock() __rcu_read_lock()
+
+/**
+ * rcu_read_unlock - marks the end of an RCU read-side critical section.
+ *
+ * See rcu_read_lock() for more information.
+ */
+
+/*
+ * So where is rcu_write_lock()? It does not exist, as there is no
+ * way for writers to lock out RCU readers. This is a feature, not
+ * a bug -- this property is what provides RCU's performance benefits.
+ * Of course, writers must coordinate with each other. The normal
+ * spinlock primitives work well for this, but any other technique may be
+ * used as well. RCU does not care how the writers keep out of each
+ * others' way, as long as they do so.
+ */
+#define rcu_read_unlock() __rcu_read_unlock()
+
+/**
+ * rcu_read_lock_bh - mark the beginning of a softirq-only RCU critical section
+ *
+ * This is equivalent of rcu_read_lock(), but to be used when updates
+ * are being done using call_rcu_bh(). Since call_rcu_bh() callbacks
+ * consider completion of a softirq handler to be a quiescent state,
+ * a process in RCU read-side critical section must be protected by
+ * disabling softirqs. Read-side critical sections in interrupt context
+ * can use just rcu_read_lock().
+ *
+ */
+#define rcu_read_lock_bh() __rcu_read_lock_bh()
+
+/*
+ * rcu_read_unlock_bh - marks the end of a softirq-only RCU critical section
+ *
+ * See rcu_read_lock_bh() for more information.
+ */
+#define rcu_read_unlock_bh() __rcu_read_unlock_bh()
+
+/**
+ * rcu_read_lock_sched - mark the beginning of a RCU-classic critical section
+ *
+ * Should be used with either
+ * - synchronize_sched()
+ * or
+ * - call_rcu_sched() and rcu_barrier_sched()
+ * on the write-side to insure proper synchronization.
+ */
+#define rcu_read_lock_sched() preempt_disable()
+#define rcu_read_lock_sched_notrace() preempt_disable_notrace()
+
+/*
+ * rcu_read_unlock_sched - marks the end of a RCU-classic critical section
+ *
+ * See rcu_read_lock_sched for more information.
+ */
+#define rcu_read_unlock_sched() preempt_enable()
+#define rcu_read_unlock_sched_notrace() preempt_enable_notrace()
+
+
+
+/**
+ * rcu_dereference - fetch an RCU-protected pointer in an
+ * RCU read-side critical section. This pointer may later
+ * be safely dereferenced.
+ *
+ * Inserts memory barriers on architectures that require them
+ * (currently only the Alpha), and, more importantly, documents
+ * exactly which pointers are protected by RCU.
+ */
+
+#define rcu_dereference(p) ({ \
+ typeof(p) _________p1 = ACCESS_ONCE(p); \
+ smp_read_barrier_depends(); \
+ (_________p1); \
+ })
+
+/**
+ * rcu_assign_pointer - assign (publicize) a pointer to a newly
+ * initialized structure that will be dereferenced by RCU read-side
+ * critical sections. Returns the value assigned.
+ *
+ * Inserts memory barriers on architectures that require them
+ * (pretty much all of them other than x86), and also prevents
+ * the compiler from reordering the code that initializes the
+ * structure after the pointer assignment. More importantly, this
+ * call documents which pointers will be dereferenced by RCU read-side
+ * code.
+ */
+
+#define rcu_assign_pointer(p, v) \
+ ({ \
+ if (!__builtin_constant_p(v) || \
+ ((v) != NULL)) \
+ smp_wmb(); \
+ (p) = (v); \
+ })
+
+#endif /* __LINUX_RCUPDATE_DEFINES_H */
--
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
^ permalink raw reply [flat|nested] 7+ messages in thread
* [patch 3/3] tracepoints : remove rcupdate.h dependency
2009-04-17 0:14 [patch 0/3] Tracepoints kill rcupdate header dependency mathieu.desnoyers
2009-04-17 0:14 ` [patch 1/3] rcupdate header remove whitespace mathieu.desnoyers
2009-04-17 0:14 ` [patch 2/3] RCU move trace defines to rcupdate_defines.h mathieu.desnoyers
@ 2009-04-17 0:14 ` mathieu.desnoyers
2 siblings, 0 replies; 7+ messages in thread
From: mathieu.desnoyers @ 2009-04-17 0:14 UTC (permalink / raw)
To: Ingo Molnar, linux-kernel, Jeremy Fitzhardinge, Steven Rostedt
Cc: Mathieu Desnoyers, Paul E. McKenney, Andrew Morton,
Christoph Hellwig
[-- Attachment #1: tracepoints-remove-rcu-header-dependency.patch --]
[-- Type: text/plain, Size: 1677 bytes --]
Use the slimmer rcupdate_defines.h instead of the fat rcupdate.h.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
CC: Jeremy Fitzhardinge <jeremy@goop.org>
CC: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
CC: Steven Rostedt <rostedt@goodmis.org>
CC: Ingo Molnar <mingo@elte.hu>
CC: Andrew Morton <akpm@linux-foundation.org>
CC: Christoph Hellwig <hch@lst.de>
---
include/linux/tracepoint.h | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
Index: linux.trees.git/include/linux/tracepoint.h
===================================================================
--- linux.trees.git.orig/include/linux/tracepoint.h 2009-04-16 19:35:53.000000000 -0400
+++ linux.trees.git/include/linux/tracepoint.h 2009-04-16 19:40:30.000000000 -0400
@@ -15,7 +15,7 @@
*/
#include <linux/types.h>
-#include <linux/rcupdate.h>
+#include <linux/rcupdate_defines.h>
struct module;
struct tracepoint;
@@ -150,11 +150,11 @@ extern int tracepoint_get_iter_range(str
* tracepoint_synchronize_unregister must be called between the last tracepoint
* probe unregistration and the end of module exit to make sure there is no
* caller executing a probe when it is freed.
+ * Using a define rather than a static inline to make sure tracepoint.h does not
+ * depend on rcupdate.h. rcupdate.h must be included whenever
+ * tracepoint_synchronize_unregister() is used.
*/
-static inline void tracepoint_synchronize_unregister(void)
-{
- synchronize_sched();
-}
+#define tracepoint_synchronize_unregister() synchronize_sched()
#define PARAMS(args...) args
--
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [patch 2/3] RCU move trace defines to rcupdate_defines.h
2009-04-17 0:14 ` [patch 2/3] RCU move trace defines to rcupdate_defines.h mathieu.desnoyers
@ 2009-04-17 0:43 ` Ingo Molnar
2009-04-17 0:55 ` Mathieu Desnoyers
0 siblings, 1 reply; 7+ messages in thread
From: Ingo Molnar @ 2009-04-17 0:43 UTC (permalink / raw)
To: mathieu.desnoyers
Cc: linux-kernel, Jeremy Fitzhardinge, Steven Rostedt,
Paul E. McKenney, Andrew Morton, Christoph Hellwig
* mathieu.desnoyers@polymtl.ca <mathieu.desnoyers@polymtl.ca> wrote:
> include/linux/rcupdate.h | 127 ------------------------------
> include/linux/rcupdate_defines.h | 163 +++++++++++++++++++++++++++++++++++++++
Looks good to me (if Paul accepts it too), but please use the
standard convention we use in other places for 'light' headers:
rcupdate_types.h.
Ingo
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [patch 2/3] RCU move trace defines to rcupdate_defines.h
2009-04-17 0:43 ` Ingo Molnar
@ 2009-04-17 0:55 ` Mathieu Desnoyers
2009-04-17 1:04 ` Ingo Molnar
0 siblings, 1 reply; 7+ messages in thread
From: Mathieu Desnoyers @ 2009-04-17 0:55 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Jeremy Fitzhardinge, Steven Rostedt,
Paul E. McKenney, Andrew Morton, Christoph Hellwig
* Ingo Molnar (mingo@elte.hu) wrote:
>
> * mathieu.desnoyers@polymtl.ca <mathieu.desnoyers@polymtl.ca> wrote:
>
> > include/linux/rcupdate.h | 127 ------------------------------
> > include/linux/rcupdate_defines.h | 163 +++++++++++++++++++++++++++++++++++++++
>
> Looks good to me (if Paul accepts it too), but please use the
> standard convention we use in other places for 'light' headers:
> rcupdate_types.h.
>
> Ingo
Given there were not "types" declared per-se, I thought _defines was
more appropriate. But I don't mind, as long as we separate the heavy
from the "light" header. I'll repost with _types.h.
Mathieu
--
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [patch 2/3] RCU move trace defines to rcupdate_defines.h
2009-04-17 0:55 ` Mathieu Desnoyers
@ 2009-04-17 1:04 ` Ingo Molnar
0 siblings, 0 replies; 7+ messages in thread
From: Ingo Molnar @ 2009-04-17 1:04 UTC (permalink / raw)
To: Mathieu Desnoyers
Cc: linux-kernel, Jeremy Fitzhardinge, Steven Rostedt,
Paul E. McKenney, Andrew Morton, Christoph Hellwig
* Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> wrote:
> * Ingo Molnar (mingo@elte.hu) wrote:
> >
> > * mathieu.desnoyers@polymtl.ca <mathieu.desnoyers@polymtl.ca> wrote:
> >
> > > include/linux/rcupdate.h | 127 ------------------------------
> > > include/linux/rcupdate_defines.h | 163 +++++++++++++++++++++++++++++++++++++++
> >
> > Looks good to me (if Paul accepts it too), but please use the
> > standard convention we use in other places for 'light' headers:
> > rcupdate_types.h.
> >
> > Ingo
>
> Given there were not "types" declared per-se, I thought _defines
> was more appropriate. But I don't mind, as long as we separate the
> heavy from the "light" header. I'll repost with _types.h.
Ok - but it's really up to Paul - i'll wait for his take.
Ingo
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2009-04-17 1:05 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-04-17 0:14 [patch 0/3] Tracepoints kill rcupdate header dependency mathieu.desnoyers
2009-04-17 0:14 ` [patch 1/3] rcupdate header remove whitespace mathieu.desnoyers
2009-04-17 0:14 ` [patch 2/3] RCU move trace defines to rcupdate_defines.h mathieu.desnoyers
2009-04-17 0:43 ` Ingo Molnar
2009-04-17 0:55 ` Mathieu Desnoyers
2009-04-17 1:04 ` Ingo Molnar
2009-04-17 0:14 ` [patch 3/3] tracepoints : remove rcupdate.h dependency mathieu.desnoyers
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox