我正在为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()
函数中找到。
答案 0 :(得分:0)
该函数用于与不能以任何其他方式提供的设备私有数据相关联。如果没有这样的数据,那么就不应该使用该功能。
答案 1 :(得分:0)
例如,这是一种方便的方法,可以在设备探测回调中保存指向本地动态分配的设备上下文的指针,然后在设备中使用pci_get_drvdata取回该指针,以删除回调并适当地清理上下文。