lkml.org 
[lkml]   [2008]   [Mar]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [patch] Re: using long instead of atomic_t when only set/read is required


    On Thu, 6 Mar 2008, Mark Lord wrote:
    >
    > But also consider something like this:
    >
    > void store_task(void)
    > {
    > *the_task = current;
    > }
    >
    > In this case, there is no guarantee that the assignment
    > can be done atomically on all CPU types. Some RISC archs
    > (eg. MIPS R2xxx) require an (interruptible) instruction pair
    > to store values to a potentially unaligned address.

    You'd better not be using unaligned accesses for memory-ordering-sensitive
    things (I think x86 happens get even that right for most cases, but I
    don't think the architecture specification guarantees it, and I'm pretty
    sure that you might find problems on cache crossing writes, for example)

    But quite frankly, if you have an architecture that can't do the above as
    a single write when it's a pointer, then you have a totally broken
    architecture. It's not worth supporting.

    (There are data structures that are harder than native words: bytes and
    shorts can require load-modify-write cycles, and "u64" and friends can
    obviously be multiple words, so you shouldn't depend on things for those
    "complex" cases. But we *definitely* depend on atomicity for regular word
    accesses).

    Linus


    \
     
     \ /
      Last update: 2008-03-06 17:17    [W:4.793 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site