【问题标题】:Linux PCIe Driver: What to use for private data structure?Linux PCIe 驱动程序:私有数据结构使用什么?
【发布时间】:2016-01-15 21:28:13
【问题描述】:

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

【问题讨论】:

    标签: linux driver pci-e


    【解决方案1】:

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

    【讨论】:

    • 所以这只是为了记录驱动程序本身,没有信息发送到 PCIe 板或用户空间?
    • @user2205930:正确。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2019-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-12
      相关资源
      最近更新 更多