内核数据类型

1430阅读 0评论2010-11-03 add358
分类:LINUX

 Linux内核有很强的可移植性,截至linux-3.2.1为止,支持体系架构接近30种,可在内核源码树的"arch"目录查看;内核这种可移植性主要是通过宏操作及强化数据类型来实现。
 在内核中,使用的数据类型基本上分为三类:标准C语言类型、确定变量大小的类型、接口特定类型。在编写驱动程序时,涉及到可移植的部分,要格外注意数据类型的使用。

 1 标准C语言类型
  即为C99标准定义的数据类型(2011.12发布新的标准C11);这些数据类型在不同的体系架构中占用的空间大小可能并不相同。因此使用时,需小心。
  定义数据类型如下:
关键字 位长(字节) 格式化字符串 关键字 位长(字节) 格式化字符串
char 1 %c signed short 2
unsigned char 1
long int 4或
8
%li,%ld
signed char 1
unsigned long 4或
8
%lu
int 2(16位系统)或
4
%i,%d signed long 4或
8

unsigned int 2或
4
%u long long 8 %lli
signed int 2或
4
%i,%d unsigned long long 8 %llu
short int 2 %hi float 4 %f,%e,%g
unsigned short 2 %hu double 8 %f,%e,%g



long double 8或以上 %Lf,%Le,%Lg

 2 确定变量大小的类型
  此变量类型在""头文件中声明,该头文件又被""头文件包含。
  1.   u8;  /* 无符号8位值 */
  2.   u16; /* 无符号16位值 */
  3.   u32; /* 无符号32位值 */
  4.   u64; /* 无符号64位值 */
  有符号类型只需将'u'改成's',但有符号类型在驱动中并不多见。

 3 接口特定类型
  "接口特定"是指由某个库定义的一种数据类型,以便为某个特定的数据结构提供接口.(引用ldd3)
 像"*_t"类型,比如pid_t,size_t等等。



上一篇:关于开发板mount不上PC机
下一篇:不同处理器系统的内核/内核补丁下载站点