编写设备驱动程序

结构宏如何工作?

在 64 位设备驱动程序中,结构宏使得两种处理能力的数据结构可以使用相同的内核内存片段。内存缓冲区保存数据结构的本机形式的内容,即 LP64 和 ILP32 形式。每种结构的访问是通过条件表达式实现的。如果驱动程序以 32 位方式编译,则仅支持一种数据模型(本机形式)。不使用条件表达式。

64 位版本的宏依赖于数据结构阴影版本的定义。阴影版本描述了使用固定宽度类型的 32 位接口。将 "32" 附加到本机数据结构名称,就形成了阴影数据结构的名称。为方便起见,将阴影结构的定义放置到与本机结构相同的文件中,以降低将来的维护成本。

这些宏可以采用下列参数:

structname

数据结构的本机形式的结构名称,即在 struct 关键字后输入的内容。

umodel

包含用户数据模型(例如 FILP32FLP64)的标志字,从 ioctl(9E) 的模式参数中提取。

handle

此名称用于引用这些宏所处理的结构的特定实例。

fieldname

结构内部的字段的名称。