Re: [patch 01/15] Kernel Tracepoints

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Peter Zijlstra <peterz@...>
Cc: <akpm@...>, Ingo Molnar <mingo@...>, <linux-kernel@...>, Masami Hiramatsu <mhiramat@...>, Frank Ch. Eigler <fche@...>, Hideo AOKI <haoki@...>, Takashi Nishiie <t-nishiie@...>, Steven Rostedt <rostedt@...>, Alexander Viro <viro@...>, Eduard - Gabriel Munteanu <eduard.munteanu@...>, Paul E McKenney <paulmck@...>
Date: Tuesday, July 15, 2008 - 12:08 pm

* Peter Zijlstra (peterz@infradead.org) wrote:

Actually, we could probably do the following, which also adds an extra
coherency check about non-NULL pointer assumptions :

#ifdef CONFIG_RCU_DEBUG /* this would be new */
#define DEBUG_RCU_BUG_ON(x) BUG_ON(x)
#else
#define DEBUG_RCU_BUG_ON(x)
#endif

#define rcu_dereference(p)     ({ \
                                typeof(p) _________p1 = ACCESS_ONCE(p); \
                                if (p != NULL) \
                                  smp_read_barrier_depends(); \
                                (_________p1); \
                                })

#define rcu_dereference_non_null(p)     ({ \
                                typeof(p) _________p1 = ACCESS_ONCE(p); \
                                DEBUG_RCU_BUG_ON(p == NULL); \
                                smp_read_barrier_depends(); \
                                (_________p1); \
                                })

The use-case where rcu_dereference() would be used is when it is
followed by a null pointer check (grepping through the sources shows me
this is a very very common case). In rare cases, it is assumed that the
pointer is never NULL and it is used just after the rcu_dereference. It
those cases, the extra test could be saved on alpha by using
rcu_dereference_non_null(p), which would check the the pointer is indeed
never NULL under some debug kernel configuration.

Does it make sense ?

Mathieu


-- 
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F  BA06 3F25 A8FE 3BAE 9A68
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[patch 01/15] Kernel Tracepoints, Mathieu Desnoyers, (Wed Jul 9, 10:59 am)
Re: [patch 01/15] Kernel Tracepoints, Peter Zijlstra, (Tue Jul 15, 3:50 am)
Re: [patch 01/15] Kernel Tracepoints, Mathieu Desnoyers, (Tue Jul 15, 9:25 am)
Re: [patch 01/15] Kernel Tracepoints, Peter Zijlstra, (Tue Jul 15, 10:03 am)
Re: [patch 01/15] Kernel Tracepoints, Mathieu Desnoyers, (Tue Jul 15, 3:02 pm)
Re: [patch 01/15] Kernel Tracepoints, Peter Zijlstra, (Tue Jul 15, 3:52 pm)
Re: [patch 01/15] Kernel Tracepoints, Mathieu Desnoyers, (Tue Jul 15, 10:46 am)
Re: [patch 01/15] Kernel Tracepoints, Peter Zijlstra, (Tue Jul 15, 11:13 am)
Re: [patch 01/15] Kernel Tracepoints, Masami Hiramatsu, (Tue Jul 15, 2:52 pm)
Re: [patch 01/15] Kernel Tracepoints, Mathieu Desnoyers, (Tue Jul 15, 3:08 pm)
Re: [patch 01/15] Kernel Tracepoints, Mathieu Desnoyers, (Tue Jul 15, 2:22 pm)
Re: [patch 01/15] Kernel Tracepoints, Steven Rostedt, (Tue Jul 15, 2:33 pm)
Re: [patch 01/15] Kernel Tracepoints, Peter Zijlstra, (Tue Jul 15, 9:59 am)
Re: [patch 01/15] Kernel Tracepoints, Mathieu Desnoyers, (Tue Jul 15, 10:27 am)
Re: [patch 01/15] Kernel Tracepoints, Peter Zijlstra, (Tue Jul 15, 10:42 am)
Re: [patch 01/15] Kernel Tracepoints, Mathieu Desnoyers, (Tue Jul 15, 11:22 am)
Re: [patch 01/15] Kernel Tracepoints, Peter Zijlstra, (Tue Jul 15, 11:31 am)
Re: [patch 01/15] Kernel Tracepoints, Mathieu Desnoyers, (Tue Jul 15, 1:50 pm)
Re: [patch 01/15] Kernel Tracepoints, Mathieu Desnoyers, (Tue Jul 15, 12:08 pm)
Re: [patch 01/15] Kernel Tracepoints, Paul E. McKenney, (Fri Aug 1, 5:10 pm)
Re: [patch 01/15] Kernel Tracepoints, Mathieu Desnoyers, (Tue Jul 15, 12:26 pm)
Re: [patch 01/15] Kernel Tracepoints, Peter Zijlstra, (Tue Jul 15, 12:25 pm)
Re: [patch 01/15] Kernel Tracepoints, Paul E. McKenney, (Fri Aug 1, 5:10 pm)
Re: [patch 01/15] Kernel Tracepoints, Mathieu Desnoyers, (Tue Jul 15, 12:51 pm)
Re: [patch 01/15] Kernel Tracepoints, Paul E. McKenney, (Fri Aug 1, 5:10 pm)
Re: [patch 01/15] Kernel Tracepoints, Peter Zijlstra, (Fri Aug 1, 8:03 pm)
Re: [patch 01/15] Kernel Tracepoints, Paul E. McKenney, (Fri Aug 1, 8:17 pm)
Re: [patch 01/15] Kernel Tracepoints, Mathieu Desnoyers, (Tue Jul 15, 11:50 am)
Re: [patch 01/15] Kernel Tracepoints, Paul E. McKenney, (Fri Aug 1, 5:10 pm)