深入理解块设备驱动程序:从基础到高级应用
1. 清理操作与 fsync_dev 调用
在块设备驱动的操作中,清理工作至关重要。以下代码展示了清理队列和全局数组的操作:
blk_cleanup_queue(BLK_DEFAULT_QUEUE(major));
/* Clean up the global arrays */
read_ahead[major] = 0;
kfree(blk_size[major]);
blk_size[major] = NULL;
kfree(blksize_size[major]);
blksize_size[major] = NULL;
kfree(hardsect_size[major]);
hardsect_size[major] = NULL;
这里,调用 fsync_dev 是必要的,它用于释放内核在各种缓存中对设备的所有引用。 fsync_dev 是 block_fsync 的实现,而 block_fsync 是块设备的 fsync “方法”。
2. 头文件 blk.h
所有块设备驱动都应包含头文件 <linux/blk.h> 。该文件定义了块设备驱动中常用的许多代码,并提供了处理 I/O 请求队列的函数。不过, blk.h 头文件比较特殊,它基于
超级会员免费看
订阅专栏 解锁全文

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



