【发布时间】:2015-08-08 17:00:12
【问题描述】:
我目前正在阅读《Linux 设备驱动程序》第三版。
摘录:
scull 设备驱动程序只实现最重要的设备 方法。其file_operations结构初始化如下:
struct file_operations scull_fops = { .owner = THIS_MODULE, .llseek = scull_llseek, .read = scull_read, .write = scull_write, .ioctl = scull_ioctl, .open = scull_open, .release = scull_release, };这个 声明使用标准 C 标记结构初始化 句法。这种语法是首选,因为它使驱动程序更 在结构定义的变化中可移植,并且, 可以说,使代码更加紧凑和可读。 标记 初始化允许结构成员的重新排序;在某些情况下 在案例中,显着的性能改进已经实现 将指向经常访问的成员的指针放在同一硬件中 缓存线。
我可能读错了。它们是否意味着对象内存中的最终布局将与初始结构定义不同?因此不便携?我看不到建议的可行实施。有人可以解释一下最后一段中的建议吗?他们是否建议函数在内存中的最终放置会受到影响并彼此更接近?因此更有可能在同一个缓存行中。
【问题讨论】:
标签: linux gcc linux-kernel linux-device-driver c99