在pci驱动是使用pci_present()函数在init函数中,编译过程中报错。

其中的源码为:

static int __init shao_init(void) { int init_ret; if (!pci_present()){ printk("This kernel version does not support PCI.../n"); return -ENODEV; } if(!pci_register_driver(&shao_driver)){ pci_unregister_driver(&shao_driver); return -ENODEV; } else printk("----------pci_register_driver success----------/n");  

error原因是:

error: implicit declaration of function ‘pci_present’

后来查阅了一些资料,发现下文:

Linux Kernel Mailing List wrote: 
> ChangeSet 1.1317, 2003/06/05 12:04:33-07:00, greg@kroah.com 

> [PATCH] PCI: move pci_present() into drivers/pci/search.c 

> This will let not have to export the pci_devices variable. 

pci_present() should be killed. It's left over from 2.0 or 1.2 days, 
and has no meaning anymore.

The old-kernel use was to determine if a PCI bus. Drivers had to check 
if a PCI bus was present, before probing for a PCI device using the 
old-old find-by-slot-and-busid method of PCI bus probing. As the 
now-old method of PCI bus probing (pci_find_device) and the current PCI 
API both provide correct behavior when no PCI bus is present, 
pci_present() itself no longer has any meaning and is entirely redundant.

At the very least, we should use the gcc "deprecated" attribute on 
pci_present definitions, both normal and no-op.

IMO pci_present should go before 2.6.0... it's lived long enough.

Jeff

或许我可以理解为,pci驱动已经被2.6内核默认支持,不存在甄别支持不支持的问题,在boot阶段,linux内核已经将PCI设备总线初始化并分配好了。

转载于:https://www.cnblogs.com/shaoguangleo/archive/2011/05/11/2805907.html

2.6内核中被废弃的pci_present()相关推荐

  1. Linux 内核中的 GCC 特性(zz)

    from:http://www.ibm.com/developerworks/cn/linux/l-gcc-hacks/ GCC 和 Linux 是出色的组合.尽管它们是独立的软件,但是 Linux ...

  2. linux内核中的设计模式

    创建型     Object Pool   Object Pool模式可以提升性能,尤其是在对象的分配.初始化成本高,使用频率高 但使用时间短的情况下.对象池可以设置对象池的大小和回收时间缓存预分配的 ...

  3. __setup 在内核中的作用【转】

    本文转载自:http://blog.csdn.net/lanmanck/article/details/7613305 本文来自: http://blog.chinaunix.net/uid-1379 ...

  4. Linux内核中锁机制之完成量、互斥量

    在上一篇博文中笔者分析了关于信号量.读写信号量的使用及源码实现,接下来本篇博文将讨论有关完成量和互斥量的使用和一些经典问题. 八.完成量 下面讨论完成量的内容,首先需明确完成量表示为一个执行单元需要等 ...

  5. linux 保留内核中sas驱动的加载导致crash问题

    [root@localhost ~]# uname -a Linux localhost.localdomain 3.10.0-693.5.2.el7.x86_64 问题描述,在crash的时候,小内 ...

  6. 内核中的内存申请:kmalloc、vmalloc、kzalloc、kcalloc、get_free_pages【转】

    转自:http://www.cnblogs.com/yfz0/p/5829443.html 在内核模块中申请分配内存需要使用内核中的专用API:kmalloc.vmalloc.kzalloc.kcal ...

  7. 详解 ARM64 内核中对 52 位虚拟地址的支持

    当 64 位硬件变得可用之后,处理更大地址空间(大于 232 字节)的需求变得显而易见.现如今一些公司已经提供 64TiB 或更大内存的服务器,x86_64 架构和 arm64 架构现在允许寻址的地址 ...

  8. linux系统内核文百科,Linux之内核中的文件系统 -电脑资料

    文件描述符 一般说起文件和文件系统的时候,都会下意识的想到它们存在于磁盘上,管理各种文件呢?即运行时文件系统在内核中的表示. 我们知道,进程是操作系统分配资源的基本单位,文件也是在进程中被处理的.比如 ...

  9. 简单谈一点linux内核中套接字的bind机制--数据结构以及端口确定

    众所周知,创建一个套接字可以bind到一个特定的ip地址和端口,实际上套接字这一概念代表了TCP/IP协议栈的应用层标识,协议栈中的应用层就是通过一个ip地址和一个端口号标识的,当然这仅仅是对于TCP ...

最新文章

  1. C#3.0扩展方法[转]
  2. Spring MVC 启动
  3. php 中 app cookie管理,详解iOS App开发中Cookie的管理方法
  4. Error building SqlSession问题
  5. Axure-----三级下拉菜单的具体实现过程
  6. 面试中的智力题及编程实践
  7. C++关闭同步流 ios::sync_with_stdio(false);
  8. ios开发-教程选择
  9. 调查问卷或量表的选项方向或顺序该如何设置??
  10. 深度 | 英伟达Titan Xp出现后,如何为深度学习挑选合适的GPU?这里有份性价比指南
  11. mysql ndb存储引擎_ndb 存储引擎
  12. Android开发 个人开发者几大后端云比较
  13. Winmerge教程,包括可视化补丁,差异,合并示例
  14. vue 前端传图片文件,后端接收
  15. 全面曝光POS机支付行业三大痛点,许多支付人为此献出劳动成果
  16. photoshop图像处理技术(二)
  17. java.lang.RuntimeException: java.lang.RuntimeException: org.codehaus.plexus.component.repository.exc
  18. LeetCode 416. 分割等和子集 【c++/java详细题解】
  19. SWIFT PLM 介绍|基于微服务架构的Swift PLM云平台
  20. 解决:用户 ‘sa‘ 登录失败。原因: 未与信任 SQL Server 连接相关联

热门文章

  1. mysql数据库blob区别_MySQL中TEXT与BLOB字段类型的区别
  2. linux cache控制 内核,linux内核之bcache简介 [转]
  3. 基于K8S构建企业级Jenkins CI/CD平台实战(三) 之 带你实战Spring boot/Cloud 项目 CI/CD jenkins自动化构建、部署过程
  4. Springboot [日志管理LogBack]
  5. 禅道826版本SQL注入,登录绕过以及禅道826后台GetShell的小技巧
  6. yabailv 运放_运放的压摆率
  7. linux存储实用程序,技术|使用 Linux 实用程序 gPhoto2 备份手机存储
  8. 安装报错_RG Magic Bullet安装报错修复方法
  9. easyexcel导入时读不到数据_EasyExcel简单使用--导入excel数据
  10. 拼接的option会多出空行_液晶拼接屏与墙面安装技巧