[lkml]   [2006]   [Jul]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRE: [patch] spinlocks: remove 'volatile'

    > Look at:
    > This is just what is needed to prevent the compiler from making
    > non working
    > code during optimization.

    That article is totally and completely wrong, in fact it's so wrong it's
    harmful. For example, it says:

    ... [A] variable that might be concurrently modified by multiple
    threads (without locks or a similar form of mutual exclusion) should be
    declared volatile.

    Without pointing out that the use of 'volatile' is neither required nor
    sufficient, this is an utterly false statement. The reference to "mutual
    exclusion" is puzzling, since the problem is cached data, not concurrent

    It talks about controlling compiler optimizations. What difference does it
    make to me whether an optimization that breaks my code is made by the
    compiler or the processor?

    The most serious problem with the article is that it does not point out
    what is guaranteed behavior and what happens to be true for some particular
    platforms. In fact, the only platform I know of where the behavior the
    article implies is guaranteed is (at least arguably) actually guaranteed is
    Win32. (And I'm not sure of what value a guarantee is that you have to argue
    is implied mostly by omission.)

    Sadly, it omits any mention of the *actual* legitimate use of 'volatile'.
    That is, the cases where it has guaranteed semantics and actually is both
    necessary and sufficient.


    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2006-07-07 01:23    [W:0.021 / U:39.596 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site