error: implicit declaration of function ‘elv_next_request’

在Linux 2.3.36上编译2.6.18以前驱动程序发现“error: implicit declaration of function ‘elv_next_request’”

因为,从linux-2.6.31开始elv_next_request就消失了

因此,在改版本的内核上用blk_fetch_request代替elv_next_request函数。

以前,获取I/O请求队列中下一个请求的函数是:
     struct request *elv_next_request(struct request_queue *queue);

这个函数返回经过I/O调度器优化过后的下一个请求。但是这个函数有一个特点,它会把这个请求保留在请求队列中,这样的话,如果两个elv_next_request()在非常短的时间间隔内被执行,函数就会返回同一个请求。当然,我们可以用blkdev_dequeue_request()来把一个请求从请求队列中移除,但是完全没必要这么做,因为一旦块设备驱动通知内核这个请求被完成了,内核同样会把这个请求从请求队列中移除。

把请求保留在请求队列中是以前的一个做法,那时候,内核每次只能处理一个请求————比如每次只操作一个扇区。这样做有一个缺点:就像上面讲的那样,内核不知道一个请求何时真正开始被处理,也就没有办法操作一些对处理时间有要求的请求。

况且,现在的处理器足够强大,使得内核能够同时处理多个请求,同时,也要求设备驱动要亲自移除这些请求并对它们保持追踪。所以,这种 process-on-queue模型要被抛弃,Tejun更改了代码,引入了新方法,具体可以查看:

新方法的想法就是在原来驱动的基础上增加“把请求从请求队列中移除”这么一个功能,也就是在合适的地方增加 blkdev_dequeue_request() 这么一个函数,有些地方的修改(比如IDE子系统)没有这么简单,但是大多数地方都是这样修改的。

更改之后,块设备驱动的一些旧的API随之就发生改动:函数elv_next_request(); 不再存在,替代它的是

struct request *blk_peek_request(struct request_queue *queue);

这个函数同样不移除请求,移除请求的函数是:

error: implicit declaration of function ‘elv_next_request’相关推荐

  1. 解决gcc报错:error: implicit declaration of function ‘inet_addr’ [-Werror=implicit-function-declaration]

    此文首发于我的个人博客:解决gcc报错 error implicit declaration of function 'inet_addr' [-Werror=implicit-function-de ...

  2. 【igb驱动交叉编译】igb_main.c:10044:7: error: implicit declaration of function ‘isdigit’

    最近igb编译驱动发现了这个问题: zacha@Superman:~/igb/igb-5.7.2/src$ make #@+ echo "*** The target kernel has ...

  3. Mac安装Drozer apk安全测试框架踩坑记录, ‘openssl/opensslv.h‘ file not found 和implicit declaration of function‘xx‘

    一. 环境准备 查看Drozer项目说明发现环境要求 大致就是: jdk1.7+ python2.7和pip 2不支持python3和pip3 Protobuf 2.6 + Pyopenssl 16. ...

  4. 为什么告警warning implicit declaration of function必须修复

    相关:<C指针截断问题(形如0xaaaabbbbccccdddd > 0xffffffffccccdddd)> 本篇送给每一位写C/C++的朋友. 实例 试着编译这样一段程序 #in ...

  5. linux c warning: implicit declaration of function 'strtok_r'解决方案

    解决方法:警告的文件头部 添加 #define _GNU_SOURCE 编译时出现警告 warning: implicit declaration of function 'strtok_r' war ...

  6. linux c implicit declaration of function 警告的解决方法

    在改掉所有的warning时老报一个implicit declaration of function 的警告错误,上网查了下原因,原来有两种情况会产生这种情况 1  没有把函数所在的c文件生成.o目标 ...

  7. warning: implicit declaration of function导致core

    centos上使用gcc编译某程序得到warning: implicit declaration of function 同时写了一个测试程序用到c++库, 因此使用g++编译. 测试程序无问题.  ...

  8. warning: implicit declaration of function ‘sleep’(添加头文件: #include <unistd.h>)

    ubuntu编译c程序报错: warning: implicit declaration of function 'sleep' 解决方法: 添加头文件: #include <unistd.h& ...

  9. 【转】implicit declaration of function 这种警告问题的原因及解决方法

    [转]implicit declaration of function 这种警告问题的原因及解决方法 参考文章: (1)[转]implicit declaration of function 这种警告 ...

  10. C编译报错: implicit declaration of function xxx is invalid in C99 [-Wimplicit-function-declaration]

    C编译报错: implicit declaration of function xxx is invalid in C99 [-Wimplicit-function-declaration] 代码文件 ...

最新文章

  1. 机房配电柜、机柜线缆施工标准做法及线缆入柜方式
  2. 以智能数据架构,挖掘增长金矿
  3. 【已解决】报错:cannot be resolved to a variable
  4. Excel VBA 重要参考(原始的VBA代码)
  5. Mac安装telnet
  6. 保存jpg太大怎么办_[日本清酒小知识] 清酒可以放多久?应该怎样保存呢?——清酒保存指南(收藏版)...
  7. 【OGG】OGG简单配置双向复制(三)
  8. 使用__slots__限定实例的成员列表
  9. IOS开发学习基于swift语言
  10. Android面试整理
  11. 东南西北十字图_word画东南西北方向图标 怎么在Word里绘制方向十字图标
  12. 第11期 Jenkins 社区 2020年 GSoC Phase1 分享
  13. php写的在线试衣,求解模特试衣,布料成衣贴图算法
  14. 焦距 对焦 变焦--摄影基础理论(3)
  15. 阿里云天池大赛赛题(机器学习)——阿里云安全恶意程序检测(完整代码)
  16. Revi开发 - 构件过滤(FilteredElementCollector)
  17. SEO优化,4个独辟蹊径的策略
  18. 计算机组成原理移位图,计算机组成原理移位运算实验报告.doc
  19. pycharm好看的主题配色及字体设置
  20. GoAccess 分析nginx日志

热门文章

  1. C# 将数据导出到Excel汇总(转)
  2. 近期生活中将会发生的一点变化!
  3. 教你6步从头写机器学习算法——以感知机算法为例
  4. python基础学习
  5. 泛微发布亿元补贴计划,推动移动办公普及
  6. VB.NET与 sql数据库
  7. (Singleton)单例模式的Java实现
  8. 使用thrift做c++,java和python的相互调用 - jinghong - ITeye技术网站
  9. Java计算接口请求时间
  10. response.sendRedirect()和request.getRequestDispatcher().forward(request,reponse)的区别