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

时间:2016-01-15 21:28:13

标签: linux driver pci-e

我正在为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()函数中找到。

2 个答案:

答案 0 :(得分:0)

该函数用于与不能以任何其他方式提供的设备私有数据相关联。如果没有这样的数据,那么就不应该使用该功能。

答案 1 :(得分:0)

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