lkml.org 
[lkml]   [2006]   [Mar]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRE: Synchronizing Bit operations V2
On Thu, 30 Mar 2006, Chen, Kenneth W wrote:

> > > Option (1):
> > >
> > > #define clear_bit clear_bit_mode(..., RELEASE)
> > > #define Smp_mb__before_clear_bit do { } while (0)
> > > #define Smp_mb__after_clear_bit smp_mb()
> > >
> > > Or option (2):
> > >
> > > #define clear_bit clear_bit_mode(..., ACQUIRE)
> > > #define Smp_mb__before_clear_bit smp_mb()
> > > #define Smp_mb__after_clear_bit do { } while (0)
> > >
> > > I'm fine with either one.
> >
> > Neither one is correct because there will always be one combination of
> > clear_bit with these macros that does not generate the required memory
> > barrier.
>
> Can you give an example? Which combination?

For Option(1)

smp_mb__before_clear_bit()
clear_bit(...)(

For Option(2)

clear_bit()
smb_mp_after_clear_bit();

Both have either acquire or release semantics but do not have the effect
of a barrier as required by the macros.

Note that both before and after are used in the core kernel code. Both
must work correctly.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2006-03-31 04:40    [W:0.087 / U:0.452 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site