内核使用的基本数据类型主要有:
int : 标准的C语言整数类型
u32 : 32位整数类型
pid_t : 特定内核对象pid的类型
在不同CPU体系结构上,C语言的数据类型所占用的空间是不一样的。在x86系列结构下,数据类型占用的字节数如下表所示:
arch | char | short | int | long | ptr | long long | u8 | u16 | u32 | u64 |
i686 | 1 | 2 | 4 | 4 | 4 | 8 | 1 | 2 | 4 | 8 |
在linux下,内核中的地址是unsigned long 类型,指针的大小与long类型的大小相同。
内核提供的所有数据类型在头文件<asm/types.h>中声明,这个文件又被<Linux/types.h>所包含。
Linux使用有前缀的类型用于将变量显露给用户空间,如__u32。
内核中很多数据类型是由typedef声明,这样便于移植。