lkml.org 
[lkml]   [2003]   [Aug]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: Lockless file reading
    Richard B. Johnson wrote:
    > Let's see if it is possible for the middle byte of
    > a 3-byte sequence to not be written when both
    > other bytes are written:

    > Even in machines that do load/store operations where individual
    > components of those stores happen in groups, access to/from
    > a buffer of such data is controlled (by hardware) so a write
    > will complete before a read occurs.

    I don't understand what you mean by this.

    Do you mean that the writes are forced to appear on a different CPU in
    the same order that they were written? That isn't true on x86, for
    two reasons: 1. writes aren't always in processor order (see
    CONFIG_X86_OOSTORE and CONFIG_X86_PPRO_FENCE); 2. reads on the other
    processor are out of order anyway.

    > With hardware that can perform byte-access (ix86), the only
    > byte-access that is going to happen is at the end(s) of buffers.

    Not true. Take a look at __copy_user() in arch/i386/lib/usercopy.c.
    The first few bytes are copied using "rep;movsb", which is not
    guaranteed to use a word write for the aligned pair, nor is it
    guaranteed a particular timing (there could be an interrupt between
    each byte).

    Other architectures are similar.

    -- Jamie
    -
    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: 2005-03-22 13:48    [W:2.183 / U:0.784 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site