我正在为自定义设备编写 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函数时,我有几个进程使用驱动程序打开了句柄并执行了几个 ioctl。
那么处理设备移除的正确方法是什么?如何安全地等待当前运行的 ioctl 完成,然后从我的驱动程序中正确删除设备?