gpt4 book ai didi

c - 编写自定义 PCIe 热插拔 Linux 2.6.x 驱动程序

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:41:18 27 4
gpt4 key购买 nike

我正在为自定义设备编写 PCIe 驱动程序/模块。由于设备是热插拔的,它可以随时消失。

这里是我如何设置 pci_driver 结构:

struct pci_driver my_pci_driver = {
.name = "my_pci_driver",
.id_table = ids,
.probe = "my_pci_driver_probe",
.remove = "my_pci_driver_remove"
};

但是我不知道如何正确处理remove事件。当调用 .remove 函数时,我有几个进程已使用驱动程序打开句柄并执行多个 ioctl。

那么处理设备删除的正确方法是什么?我如何才能安全地等待当前正在运行的 ioctl 完成,然后从我的驱动程序中正确地删除设备?

最佳答案

这是一个非常宽泛的问题。您需要以支持设备移除的方式设计您的代码。您可以从任何 usb 驱动程序/usr/src/linux/drivers/usb/... 中获取示例,它本质上是可移动的。

评论回复:
不,不是,USB 子系统不负责驱动程序中的同步。有很多方法可以同步引用计数,您可以使用互锁操作或使用自旋锁或 ...
有个好document在 Windows 上描述同步原语,术语有点不同,但概念是相同的,所以我推荐。

关于c - 编写自定义 PCIe 热插拔 Linux 2.6.x 驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1042911/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com