在USB设备Linux内核模块中调用USB批量发送消息时出现问题

时间:2012-01-02 17:02:49

标签: linux module usb kernel driver

我有一个内核模块,我在其中处理USB设备。

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

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

有人可以告诉我为什么吗?

如果这不适合进行此类操作,我可以在哪里安全地进行操作?如何在另一个地方发出操作信号?一个计时器?

请就此具体问题提出建议。

1 个答案:

答案 0 :(得分:4)

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

  • 创建了一项工作任务
  • 将正在处理的处理放入工作任务例程
  • 每当我有足够的数据来处理我需要的东西时,我就会安排工作任务。

我认为这种方法可以带来更好的设计,因为减少了在中断句柄中花费的时间。

我现在可以安静地调用usb_bulk_msg(...)因为我不再处于中断环境中。这确实是问题所在。