当前位置: 技术问答>linux和unix
对于linux内核中的一些数据类型命名的一些疑问。。求解
来源: 互联网 发布时间:2016-11-23
本文导语: linux 内核中的数据类型,都有那些遵循了 *_struct 的命名习惯呢?比如 task_struct, mm_struct, vm_area_struct。又有哪些使用了typedef呢,比如 mem_map_t。。最关键的一个问题是,具体的实现是否足够的整齐一致优雅呢。。。刚刚了...
linux 内核中的数据类型,都有那些遵循了 *_struct 的命名习惯呢?比如 task_struct, mm_struct, vm_area_struct。又有哪些使用了typedef呢,比如 mem_map_t。。最关键的一个问题是,具体的实现是否足够的整齐一致优雅呢。。。刚刚了解linux的内核没有几天。。。求教了。。。。。
|
现代linux内核数据类型考虑到了可移植性问题。
1,标准C类型,如init。C语言规定了各种基本类型的最小长度(limits.h文件)。
2,固定长度类型,如u32。这个不用多说,在 “/types.h”文件定义(为平台相关的,如asm-i386)。
3,特定内核对象类型,如pid_t。这个就是使用typedef定义的数据类型,每个这种数据类型的变量都代表了一个内核对象。使用这种数据类型,隐藏了真实的数据类型(如pid_t,不上int),提高了可移植性。
还有就是编程风格了。包括缩进,命名规范,函数,注释等。可参考内核源码树中的Documentation/CodingStyle文件。
最后可参考两本书《Linux Device Driver》第三版和《Linux Kernel Development》第二版。对这部分内容都有介绍。
1,标准C类型,如init。C语言规定了各种基本类型的最小长度(limits.h文件)。
2,固定长度类型,如u32。这个不用多说,在 “/types.h”文件定义(为平台相关的,如asm-i386)。
3,特定内核对象类型,如pid_t。这个就是使用typedef定义的数据类型,每个这种数据类型的变量都代表了一个内核对象。使用这种数据类型,隐藏了真实的数据类型(如pid_t,不上int),提高了可移植性。
还有就是编程风格了。包括缩进,命名规范,函数,注释等。可参考内核源码树中的Documentation/CodingStyle文件。
最后可参考两本书《Linux Device Driver》第三版和《Linux Kernel Development》第二版。对这部分内容都有介绍。
|
下面是Linux Device Driver的原话:
Many _t types are defined in , but the list is rarely useful. When you need a specific type, you'll find it in the prototype of the functions you need to call or in the data structures you use.
也就是typedef一般只是通过特定的函数操作,而不进行直接访问。