lkml.org 
[lkml]   [2006]   [Oct]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 1/4] LOG2: Implement a general integer log2 facility in the kernel [try #4]
    >> > > > Were you planning on porting Linux to a machine with
    >> > > > non-8-bit-bytes any
    >> > > > time soon? Because there's a lot more to fix than this.
    >> > >
    >> > > I am considering the case [assuming 8-bit-byte machines] where
    >> > > sizeof(u32) is not 4. Though I suppose GCC will probably make a
    >> > > 32-bit
    >> > > type up if the hardware does not know one.
    >> >
    >> > If the machine has 8-bit bytes, how can sizeof(u32) be anything other
    >> > than 4?
    >>
    >> typedef unsigned int u32;
    >>
    >> Though this should not be seen in the linux kernel.
    >
    > Well, uhh, actually...
    >
    > All presently-supported architectures do exactly that. Well, some do:
    >
    > typedef unsigned int __u32;
    > #ifdef __KERNEL__
    > typedef __u32 u32;
    > #endif

    Ouch ouch ouch. It should better be

    typedef uint32_t __u32;

    So that even if there happens to be a compiler that does sizeof(int)=8,
    sizeof(u32) will actually be 4. Say, if there happens to be an
    architecture that does only know 64-bit integers, the compiler will
    have some extra magic to make uint32_t behave like a 32-bit type in C
    and transparently use 64-bit assembler. So far the theory.


    -`J'
    --
    -
    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/

    \
     
     \ /
      Last update: 2006-10-09 14:31    [from the cache]
    ©2003-2014 Jasper Spaans. hosted at Digital Ocean