LDD读书笔记第十一章-内核的数据类型
Linux数据类型
| Arch | char | short | int | long | ptr | long-long | u8 | u16 | u32 | u64 |
| i386 | 1 | 2 | 4 | 4 | 4 | 8 | 1 | 2 | 4 | 8 |
| alpha | 1 | 2 | 4 | 8 | 8 | 8 | 1 | 2 | 4 | 8 |
| armv41 | 1 | 2 | 4 | 4 | 4 | 8 | 1 | 2 | 4 | 8 |
| ia64 | 1 | 2 | 4 | 8 | 8 | 8 | 1 | 2 | 4 | 8 |
| m86k | 1 | 2 | 4 | 4 | 4 | 8 | 1 | 2 | 4 | 8 |
| mips | 1 | 2 | 4 | 4 | 4 | 8 | 1 | 2 | 4 | 8 |
| ppc | 1 | 2 | 4 | 4 | 4 | 8 | 1 | 2 | 4 | 8 |
| sparc | 1 | 2 | 4 | 4 | 4 | 8 | 1 | 2 | 4 | 8 |
| sparc64 | 1 | 2 | 4 | 4 | 4 | 8 | 1 | 2 | 4 | 8 |
| x86_64 | 1 | 2 | 4 | 8 | 8 | 8 | 1 | 2 | 4 | 8 |
需要注意的是sparc64架构运行的是32位用户空间。但是在内核空间是64位的。
在当前的所有平台上指针和long型的大小总相同
u8等固定大小的值有其有符号版本以s代替u如:s8
如果需要在用户空间使用固定大小的话使用双下划线版本如__u8
固定大小的类型是linux特有的 如果考虑向其他unix变种移植应使用C99标准类型变量如:uint8_t
[阅读全文] »