Linux PCIe 驱动程序:用于私有数据结构的内容



我正在为 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将其检索回来,并对上下文进行适当的清理。

最新更新