lkml.org 
[lkml]   [2010]   [Jan]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [RFC PATCH] introduce sys_membarrier(): process-wide memory barrier (v3b)
    On Tue, Jan 12, 2010 at 11:27:39AM -0500, Steven Rostedt wrote:
    > On Tue, 2010-01-12 at 10:38 -0500, Mathieu Desnoyers wrote:
    >
    > > > The UP-kernel case is handled by the #ifdef in sys_membarrier(), though
    > > > with a bit larger code footprint than the embedded guys would probably
    > > > prefer. (Or is the compiler smart enough to omit these function given no
    > > > calls to them? If not, recommend putting them under CONFIG_SMP #ifdef.)
    > >
    > > Hrm, that's a bit odd. I agree that UP systems could simply return
    > > -ENOSYS for sys_membarrier, but then I wonder how userland could
    > > distinguish between:
    > >
    > > - an old kernel not supporting sys_membarrier()
    > > -> in this case we need to use the smp_mb() fallback on the read-side
    > > and in synchronize_rcu().
    > > - a recent kernel supporting sys_membarrier(), CONFIG_SMP
    > > -> can use the barrier() on read-side, call sys_membarrier upon
    > > update.
    > > - a recent kernel supporting sys_membarrier, !CONFIG_SMP
    > > -> calls to sys_membarrier() are not required, nor is barrier().
    > >
    > > Or maybe we just postpone the userland smp_mb() question to another
    > > thread. This will eventually need to be addressed anyway. Maybe with a
    > > vgetmaxcpu() vsyscall.
    >
    > I think Paul means to wrap all your other functions under the #ifdef.
    > What you have for sys_membarrier() is fine (just return 0 on UP) but you
    > also need to wrap the helper function above it under #ifdef CONFIG_SMP.
    > Don't rely on the compiler to optimize them out. If anything, you'll
    > probably get a bunch of warnings about static functions unused.

    Yes -- much clearer statement of what I was getting at. ;-)

    Thanx, Paul


    \
     
     \ /
      Last update: 2010-01-12 17:57    [W:5.083 / U:0.268 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site