Linux块驱动——blk_init_queue()被弃用,新版内核如何实现相同操作

本文讲述了如何在新版Linux内核(如5.4.20)中调整软设备驱动,通过理解blk_init_queue的变迁,借鉴旧版操作,实现在新环境下创建和管理请求队列。实例演示了transfer和request_process函数的更新,以及如何在gendisk注册部分替换旧接口。

在参考一些设备驱动书籍、网上资料实现一个软块设备时,即使把它们的提供的代码原封不动地照抄,一编译,错误满屏。简单看了下,发现是多数是“查无此人”。显然是内核版本不对了。比如blk_init_queue()就被新版内核弃用了。

首先先去https://kernel.org下载一个旧版本的内核如2.6.10.

然后找到blk_init_queue(),可以发现,它是作为一个高级接口,基于请求、请求队列等结构体的一些冗余字段和一些操作函数做了很多额外的工作从而实现制造请求、进出队列等等过程。

新版内核(如5.4.20)去除了这些高级接口以及简化了相关的结构体的字段,让驱动开发者自己来实现这些功能。

因此,我们还是可以参考旧版的操作,基于新版的内核实现blk_init_queue()的功能。

实现代码示例:

static void _transfer(_dev_t *dev, unsigned long sector, unsigned long nsect, char* buffer, int write)
{
   
   
    unsigned long offset = sector 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weisonx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值