【问题标题】:Problems when calling USB bulk send message inside USB device Linux Kernel module在 USB 设备 Linux 内核模块中调用 USB 批量发送消息时出现问题
【发布时间】:2012-01-31 23:14:06
【问题描述】:

我有一个处理 USB 设备的内核模块。

碰巧我可以成功向设备发送 USB 批量消息,但该操作是在二进制属性的回调下进行的。

但是,当某些事情发生时,我需要执行一项特定操作。发生这种情况时,我需要向设备发送批量消息。发生的地方是自己的设备数据收入回调。如果我在那个地方发送大量消息,我会遇到内核恐慌。

谁能告诉我为什么?

如果那里不适合进行此类操作,我可以在哪里安全地进行操作?我怎样才能发出要在另一个地方完成的操作的信号?计时器?

请就这个具体问题提出建议。

【问题讨论】:

    标签: linux module usb kernel driver


    【解决方案1】:

    我设法通过以下方法解决了我面临的问题:

    • 创建了一个工作任务
    • 将正在进行的处理置于工作任务例程中
    • 每当我有足够的数据来处理我需要的东西时,我都会安排该工作任务。

    我认为这种方法会带来更好的设计,因为花在中断句柄上的时间会因此减少。

    我现在可以平静地调用usb_bulk_msg(...),因为我不再处于中断上下文中。这确实是问题所在。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-27
      • 1970-01-01
      • 1970-01-01
      • 2021-07-31
      • 2018-04-14
      • 1970-01-01
      • 2011-07-02
      • 2014-04-19
      相关资源
      最近更新 更多