1. 13 8月, 2008 1 次提交
    • H
      byteorder: add a new include/linux/swab.h to define byteswapping functions · 40c9f222
      Harvey Harrison 提交于
      Collect the implementations from include/linux/byteorder/swab.h, swabb.h
      in swab.h
      
      The functionality provided covers:
      u16 swab16(u16 val) - return a byteswapped 16 bit value
      u32 swab32(u32 val) - return a byteswapped 32 bit value
      u64 swab64(u64 val) - return a byteswapped 64 bit value
      u32 swahw32(u32 val) - return a wordswapped 32 bit value
      u32 swahb32(u32 val) - return a high/low byteswapped 32 bit value
      
      Similar to above, but return swapped value from a naturally-aligned pointer
      u16 swab16p(u16 *p)
      u32 swab32p(u32 *p)
      u64 swab64p(u64 *p)
      u32 swahw32p(u32 *p)
      u32 swahb32p(u32 *p)
      
      Similar to above, but swap the value in-place (in-situ)
      void swab16s(u16 *p)
      void swab32s(u32 *p)
      void swab64s(u64 *p)
      void swahw32s(u32 *p)
      void swahb32s(u32 *p)
      
      Arches can override any of these with an optimized version by defining an
      inline in their asm/byteorder.h (example given for swab16()):
      
      u16 __arch_swab16() {}
       #define __arch_swab16 __arch_swab16
      Signed-off-by: NHarvey Harrison <harvey.harrison@gmail.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      40c9f222