In userspace code, the macro __WORDSIZE is used, included in <bits/wordsize.h>. However, when I do Linux kernel programming, the __WORDSIZE seems not available.

If <bits/wordsize.h> is included, it will receive a compile error, saying:

error: bits/wordsize.h: No such file or directory

but if <bits/wordsize.h> is not included, it will receive another compile error, saying:

error: ‘__WORDSIZE’ undeclared.

It seems that kernel programming doesn't support the <bits/wordsize.h> header file. What should I do to determine the wordsize in Linux kernel programming?

P.S. my compiler version is gcc (GCC) 4.4.6.

  • As this is very specifically about programming, i voted to move to SO. However, out of interest, why such an old version of gcc? – HalosGhost Nov 13 '14 at 14:18
  • The gcc's version depends on my company's willing. – Victor Nov 13 '14 at 14:20
  • That's deeply unfortunate. It's now 5 minor releases behind… – HalosGhost Nov 13 '14 at 14:22
  • @HalosGhost I am also very annoyed about it, because many new features are not available. – Victor Nov 13 '14 at 14:32
  • 2
    The asm/types.h should have BITS_PER_LONG set, which should be the word size to Robert Love's Linux Kernel Development (sixth result in the search). – muru Nov 13 '14 at 14:42