lkml.org 
[lkml]   [2010]   [Jun]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: sequence lock in Linux
    On Fri, Jun 11, 2010 at 03:40:16PM -0400, Mathieu Desnoyers wrote:
    > Hi Paul,
    >
    > (CCing lkml)
    >
    > Is it just me, or the following code:
    >
    > static __always_inline unsigned read_seqbegin(const seqlock_t *sl)
    > {
    > unsigned ret;
    >
    > repeat:
    > ret = sl->sequence;
    > smp_rmb();
    > if (unlikely(ret & 1)) {
    > cpu_relax();
    > goto repeat;
    > }
    >
    > return ret;
    > }
    >
    > could use a ACCESS_ONCE() around the sl->sequence read ? I'm concerned about the
    > compiler generating code that reads the sequence number chunkwise.
    >
    > The same apply to all other reads of the sequence number in seqlock.h (including
    > the retry code).
    >
    > Thoughts ?

    Doesn't gcc guarantee that accesses to aligned basic types that fit into
    a machine word are loaded and stored in one shot? Now, gcc might choose
    to load twice (or to merge loads) due to things like register pressure,
    but given that ->sequence is an int, gcc should not be accessing it
    (say) bytewise on any platform supporting 32-bit accesses.

    Or am I suffering from wishful thinking here?

    Thanx, Paul


    \
     
     \ /
      Last update: 2010-06-11 22:09    [W:0.034 / U:31.040 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site