当前位置: 首页 > 面试题库 >

为什么除了init之外,Linux设备驱动程序还需要探测方法?

郗亦
2023-03-14
问题内容

在linux内核中,probe()驱动程序提供的方法有什么作用?它与驾驶员的init功能有何不同,即为什么不能probe()在驾驶员的init功能中执行功能动作?


问题答案:

不同的设备类型可以具有probe()函数。例如,PCI和USB设备都具有probe()函数。

如果您在谈论PCI设备,我建议您阅读Linux设备驱动程序的第12章,其中涵盖了驱动程序初始化的这一部分。第13章介绍了USB。

简短的回答,假设使用PCI:驱动程序的init函数调用pci_register_driver(),该函数将向内核提供其可以服务的设备列表以及指向该probe()函数的指针。然后,内核probe()为每个设备调用一次驱动程序的功能。

此探测功能将启动每个设备的初始化:初始化硬件,分配资源,并将该设备作为块或网络设备或任何形式向内核注册。

这使设备驱动程序更容易,因为它们不需要搜索设备或担心寻找热插拔的设备。内核会处理该部分,并在有设备供您处理时通知正确的驱动程序。



 类似资料:
  • 问题内容: 谁能解释我, 什么啊 这有什么用途? 如何使用? 为什么我不能定义与之功能相同的新功能? 问题答案: 一个,表示“输入- 输出控制”是一种特定于设备的系统调用。Linux(300-400)中只有几个系统调用,不足以表示设备可能具有的所有独特功能。因此,驱动程序可以定义一个ioctl,它允许用户空间应用程序向其发送订单。但是,ioctl并不是很灵活,并且会变得有些混乱(数十个“魔术数字”

  • 问题内容: 如何使用打开,关闭,ioctl等功能为i2c设备制作字符设备?最近两周我一直在寻找有关它的信息,找不到任何有效的方法。我在Essential LinuxDevice Drivers中找到了一些信息,但是它是针对2.6内核编写的,我使用3.4.79(我正尝试在cubian distr上为cubieboard2编写此驱动程序),因此本书有许多不推荐使用的功能,我试图在那里写我的驱动程序,但

  • 本文向大家介绍为什么需要域驱动设计(DDD)?相关面试题,主要包含被问及为什么需要域驱动设计(DDD)?时的应答技巧和注意事项,需要的朋友参考一下 映射领域 降低复杂性 可测试性 可维护性 知识丰富的设计 将业务和服务结合在一起 上下文集中 通用语言

  • 问题内容: 之前我曾假设: 平台驱动程序适用于片上设备。 普通设备驱动程序用于与处理器芯片接口的设备。 在遇到一个i2c驱动程序之前…但是在这里,我正在阅读定义为平台驱动程序的多功能i2c驱动程序。我经历了https://www.kernel.org/doc/Documentation/driver- model/platform.txt 。但是对于如何定义驱动程序(如片上和接口设备),仍然没有一

  • 更新时间:2019-04-16 19:04:41 各种不同的设备在不同的操作系统使用时,可能需要单独安装对应的驱动程序。为了方便用户,Hacklab提供了支持的部分开发板串口驱动程序下载及安装信息,请根据使用的开发板和PC OS下载对应的驱动程序。 串口芯片驱动 CP210x 下载地址 使用该串口驱动的开发板包括: ST Nucleo F412ZG esp32devkitc(Board类型可选择E

  • 问题内容: 我已经看到它用于存储的返回类型,但是我已经在ARM体系结构中使用了它,并且效果很好。 那么,这有什么不同呢?在什么情况下我应该使用它呢? 问题答案: 许多类型强制转换只会“工作得很好”。但是,这不是很严格。没有什么可以阻止您将a强制转换为a 并取消对其的引用,但这并不遵循内核API,因此容易出错。 是Sparse使用的cookie ,该工具用于在内核中查找可能的编码错误。如果您未在启用