Skip to content
  • Kyle McMartin's avatar
    [PATCH] Decrapify asm-generic/local.h · f5f5370d
    Kyle McMartin authored
    
    
    Now that Christoph Lameter's atomic_long_t support is merged in mainline,
    might as well convert asm-generic/local.h to use it, so the same code can
    be used for both sizes of 32 and 64-bit unsigned longs.
    
    akpm sayeth:
    
    Q:
    
      Is there any particular reason why these routines weren't simply
      implemented with local_save/restore_flags, if they are only meant to
      guarantee atomicity to the local cpu?  I'm sure on most platforms this
      would be more efficient than using an atomic...
    
    A:
    
      The whole _point_ of local_t is to avoid local_irq_disable().  It's
      designed to exploit the fact that many CPUs can do incs and decs in a way
      which is atomic wrt local interrupts, but not atomic wrt SMP.
    
    But this patch makes sense, because asm-generic/local.h is just a fallback
    implementation for architectures which either cannot perform these
    local-irq-atomic operations, or its maintainers haven't yet got around to
    implementing them.
    
    We need more work done on local_t in the 2.6.17 timeframe - they're defined as
    unsigned long, but some architectures implement them as signed long.
    
    Signed-off-by: default avatarKyle McMartin <kyle@parisc-linux.org>
    Cc: Benjamin LaHaise <bcrl@kvack.org>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    f5f5370d