Linux PCIe 驱动程序:用于私有数据结构的是什么?

Linux PCIe Driver: What to use for private data structure?

我正在为 Linux 创建我的第一个 PCIe 驱动程序,并且有一个关于 pci_set_drvdata() 函数使用哪个结构的问题。

PCIe 硬件是内部构建的,我们将使用 DMA 向设备发送数据或从设备发送数据。它不是声卡或任何其他需要插入内核的子系统。

当我查看示例时,似乎有一个特定的 struct 需要填写,然后发送给 pci_set_drvdata()

这个案例我要填什么?我是否只是忽略它并发送一个空白结构?我在任何 PCIe 驱动程序中指的是:

struct structure_in_question *my_struct;
my_struct = kzalloc( sizeof(*my_struct), GFP_KERNEL) );

这通常在 probe() 函数中找到。

该函数用于关联无法以任何其他方式提供的设备私有数据。如果没有此类数据,则不应使用该功能。

例如,在设备探测回调中保存指向本地动态分配的设备上下文的指针,然后在设备删除回调中使用 pci_get_drvdata 检索它并进行适当的清理是一种方便的方法上下文。