深入理解块设备驱动开发
块设备注册
在完成各种定义之后,需要设置文件操作结构。从内核 2.3.26 版本开始,块设备采用了与字符设备不同的设置方法,这让情况变得有些复杂。引入 block_device_operations 结构是为了简化内核内部操作,方便块设备驱动开发者跟踪相关操作。然而,许多开发者对块层仍不满意,预计未来版本还会有更多更改。
为了实现最大程度的可移植性,下面展示了两种不同内核版本的设置方式,以及如何在编译时测试内核版本:
#if LINUX_VERSION_CODE < 0x20326
/* 如果内核版本低于 2.3.36,则使用此结构 */
static struct file_operations radimo_fops = {
read: block_read, /* 通用块读取 */
write: block_write, /* 通用块写入 */
ioctl: radimo_ioctl,
open: radimo_open,
release: radimo_release,
check_media_change: radimo_media_change,
revalidate: radimo_revalidate
};
#else
/* 在较新的内核中,使用此结构 */
static struct block_device_o
超级会员免费看
订阅专栏 解锁全文
2385

被折叠的 条评论
为什么被折叠?



