2012-01-02 2 views
2

私はUSBデバイスを扱うカーネルモジュールを持っています。USBデバイス内でUSBバルク送信メッセージを呼び出すときの問題Linuxカーネルモジュール

私は正常にUSBバルクメッセージをデバイスに送信できますが、その操作はバイナリ属性のコールバックで行われています。

ただし、何かが発生したときに行う必要がある特定の操作があります。それが起こると、デバイスに一括メッセージを送信する必要があります。それが発生する場所は、自分のデバイスデータ収入コールバックです。その場所でバルクメッセージを送信すると、私はカーネルパニックを起こします。

誰かが私にその理由を教えてもらえますか?

このような操作を行うのが適切でない場合は、どこで安全に行うことができますか?他の場所で行う操作をどのように伝えることができますか?タイマー?

この特定の問題についてアドバイスをお願いします。

答えて

4

私は次のようなアプローチで直面した問題を解決するために管理:

  • ルーチンワークのタスクに作られていた処理を置き、作業タスク
  • を作成し、私はその仕事のスケジュールを設定私が必要とするものを処理するのに十分なデータがあるたびに、

このアプローチは、割り込み処理に費やされる時間がこのように短縮されるため、より良い設計につながると思います。

割り込みのコンテキストになっていないので、今度はusb_bulk_msg(...)を平和的に呼び出すことができます。それは確かに問題でした。

関連する問題