【精品】Linux内核分析及编程

【精品】Linux内核分析及编程

ID:44588485

大小:218.43 KB

页数:26页

时间:2019-10-23

【精品】Linux内核分析及编程_第1页
【精品】Linux内核分析及编程_第2页
【精品】Linux内核分析及编程_第3页
【精品】Linux内核分析及编程_第4页
【精品】Linux内核分析及编程_第5页
资源描述:

《【精品】Linux内核分析及编程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、第一节数据类型所占空间当Linux内核在体系结构差异较大的平台Z间移植时,会产生与数据类型相关的问题。在编译内核时使用-Wall-Wstrict-prototypes选项,可以避免很多错误的发生。内核使用的基本数据类型主要有:0>int标准C语言整数类型;0>u3232位整数类型;pid_t特定内核对象pid的类型。在不同的CPU体系结构上,C语言的数据类型所占空间不一样。下面是在x86下数据类型所占的字节数:archcharshortintlongptrIong-longu8u16u32u64i6861244481248下血是在其他平台上的数据类型所占的字节数:archcharshorti

2、ntlongptrlong-longu8u16u32u64i3861244481248alpha1248881248armv4l1244481248ia641248881248m68k1244481248mips1244481248PPG1244481248spare1244481248sparc641244481248其中基于sparc64平台的Linux用户空间可以运行32位代码,用户空间指针是32位宽的,但内核空间是64位的。内核中的地址是unsignedlong类型,指针大小和long类型相同。内核提供下列数据类型。所有类型在头文件+声明,这个文件又被头文件

3、所包含。下面是include/asm/types,h文件。#ifndef_I386_TYPES_H#ifndefASSEMBLY.typedefunsignedshortumode_t;〃下面_xx类型不会损啻POSIX名字空间,在头文件使它们,可以输出给用户空间typedef_signed_char_s8;typedefunsignedchar_u8;typedef_signed_short_sl6;typedefunsignedshort_ul6;typedef_signed_int_s32;typedefunsignedint_u32;#ifdefined

4、(_QNUC_)&&!defined(—STRICT_ANSI_)typedef_signed_longlong_s64;typedefunsignedlonglong_u64;#endif#endif/*_ASSEMBLY—*///下面的类型只用在内核中,否则会产生名字空间崩溃#ifdef—KERNEL_^defineBITS_PER_LONG32#ifndefASSEMBLY#includetypedefsignedchars8;typedefunsignedcharu8;typedefsignedshortsl6;typedefunsignedshort

5、ul6;typedefsignedints32;typedefunsignedintu32;typedefsignedlonglongs64;typedefunsignedlonglongu64;/*DMAaddressescomeingenericand64-bitflavours・#ifdefCONFIG_HIGHMEM64Gtypedefu64dma_addr_t;#elsetypedefu32dma_addr_t;#endiftypedefu64dma64_addr_t;#ifdefCONFIG_LBDtypedefu64sector_t;^defineHAVE_SECTOR_T#e

6、ndif#endif/*_ASSEMBLY_*/#endif/*—KERNEL—*/#endif卜•面是Linux/types-h的部分定义。Sifndef_LINUX_TYPES_H#define_LINUX_TYPES_H#ifdef—KERNEL_//这个宏定义必须在^includeZ前^include#defineBITS_TO_LONGS(bits)(((bits)+BITS_PER_LONG-/BITS_PER_LONG)#defineDECLARE_BITMAP(name,bits)unsignedlongname[

7、BITS_TO_LONGS(bits)]#endif^include#inuludeu8;/*unsignedbyte(8bits)*/ul6;/*unsignedword(16bits)*/u32;/*unsigned32-bit.value*/使用有前缀的类型用于将变量显露给用户空间,如u8类型。例如:一个驱动程序通过ioctl函数与运行

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。