Messages in this thread | | | Date | Thu, 28 Aug 2003 01:03:21 +0100 | From | Jamie Lokier <> | Subject | Re: 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/
| |