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 检索它并进行适当的清理是一种方便的方法上下文。
我正在为 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 检索它并进行适当的清理是一种方便的方法上下文。