Chinaunix首页 | 论坛 | 博客
  • 博客访问: 706347
  • 博文数量: 90
  • 博客积分: 3225
  • 博客等级: 少校
  • 技术积分: 1200
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-20 11:04
个人简介

菩提本无树,明镜变非台 本来无一物,何处惹尘埃

文章分类

全部博文(90)

文章存档

2015年(1)

2014年(12)

2013年(15)

2012年(31)

2011年(8)

2010年(23)

分类: LINUX

2010-11-03 00:00:00

 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等等。



阅读(1364) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~