問題タブ [irq]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - モジュール内のIRQ記述配列にアクセスし、アクション名を表示する
IRQ記述配列要素にアクセスし、これらの要素のすべてのアクション名を表示するのに苦労しているCのカーネルモジュールをプログラミングしています。
最初は、このirq_desc配列はマクロのようなものだと思っていましたが、コンパイルした後、そうではないことがわかりました。次に、for_each_irq_desc(irq、desc)関数を使用しました。しかし、今回は警告を返しました:
警告: "irq_to_desc" [/home/samet/Masaüstü/Assignment3/Ass-1.ko]は未定義です!
この警告の後、今回はモジュールをカーネルに挿入しようとしましたが、エラーメッセージが表示されました。
insmod:'./Ass-1.ko'の挿入エラー:-1モジュール内の不明なシンボル
この後、このプロセスに関連すると思われるすべてのヘッダーファイルをインクルードしましたが、何も変更されていません。
非常に短いので、コードを添付しています。
usb - Linux の ttyUSB0 のような仮想シリアル ポートの IRQ はありますか?
Linux で仮想シリアル ポートからデータを読み取っています (接続されているデバイスは xbee モジュールです)。
現時点では、ポートのバッファをチェックするスレッドで読み取りが行われます。しかし、多くのデバイスの場合、これは良くありません。1 つのポートではミリ秒ごとに、別のポートでは 1 秒ごとにデータが受信される可能性があるため、CPU の負担になります。
新しいデータが利用可能になったときにのみイベントを発生させる割り込みのようなものがあるかどうかを知りたいです(このプリンシパルはマイクロコントローラーで機能することを知っています)。
これを C++ で作成するにはどうすればよいですか?
私の知識が不足しているため、この情報をどのように使用するかわかりません。私がこのようなものを持っている場合:
while ループを削除したい。epoll_wait はどこでどのように使用しますか?
clock - CPU が IRQ0 を呼び出していない?
私はOSを書いていて、PITを使おうとしています。ハンドラーを作成し、IRQ0 (割り込み 32) の ISR エントリを作成しました。ハンドラーはまったく呼び出されていません。ISRエントリを正しく入れていないと確信しています。助言がありますか?ここに私のASMコードがあります
PITを開始するための私のコードは
ハンドラーは
から呼び出される
assembly - x86IRQマスクをクリアするとOSがハングする
OSを開発していて、PICタイマーを機能させようとしています。これは、保護モードで実行されている32ビットOSです。このコードはOSをハングさせます(理由はわかりませんが、それが私が見つけようとしていることです)。IRQ0マスクをクリアしています。このコードに何か問題がありますか、それともIDTまたはPICに問題がありますか?また、正常に動作するソフトウェア割り込みハンドラーがいくつかあるので、IDTでは機能しないと思います。
assembly - x86の割り込みハンドラーから割り込み番号を取得するにはどうすればよいですか?
x86でプロテクトモードで割り込みがトリガーされた場合、どの割り込み番号が発生したかを把握することはできますか?たとえば、int0xFFと呼んだとします。ハンドラーで、int 0xFFが呼び出されたことを確認できますか?
c - ソフトウェア割り込みコンテキストで free_irq を使用できますか?
カーネルのドキュメントにはfree_irq
、次のことが記載されています。
この関数は、割り込みコンテキストから呼び出してはなりません。
ソフトウェア割り込みは含まれますか?ソフトウェア IRQ 関数で IRQ を解放するにはどうすればよいですか?
ご協力いただきありがとうございます、
affinity - irq smp_affinity は rps (受信パッケージ ステアリング) を置き換えることができますか?
私はネットカード eth0 を持っています。これには単一のキューがあり、その IRQ 番号は 63 です。</p>
私の質問は:</p>
/proc/irq/63/smp_affinity を fffff に設定した場合
Linux カーネルが eth0 の IRQ をシステム内の各 CPU に配布するということですか?
その機能はrps(受信パッケージステアリング)と同じですか?</p>
assembly - DCD 命令と IRQ スタック
ARM プロセッサのさまざまなモード (IRQ、スーパーバイザー、ユーザーなど) 用にスタックをセットアップするトピックを研究しています。異なるスタックをセットアップするには、同じ一連の命令が必要なので (基本的にはスタック アドレスの変更のみ)、IRQ スタックのセットアップの問題に頼って質問します。次の定義があると仮定します。
次のコードを使用してスタックをセットアップします (コメントを有効にするために行番号を追加します)。
1行目は、値を にロードすることにより、2r2
行目で割り込みを無効にして IRQ モードに入る目的でロードするだけです。次に、3行目で、ラベルの (32 ビット) アドレスを、IRQ モードでバンクされたスタック ポインターにロードするために使用されます。CPSR_c
LDR
IRQ_NewStack
7行目の指示の目的を教えてください。
「32ビットワードを予約する」DCD
ために使用されるARMマニュアルを読みました。「32ビットワードを予約する」を読んだとき、それは単一の32ビット変数用にスペースを予約するようなものだと思います。つまり、 (...の単なるマクロである可能性があります)。しかし、これが事実である場合、1 つの 32 ビット ワードよりも大きくなる可能性があるスタック全体に対して 32 ビット ワードのみを予約する必要があるのはなぜですか?DCD
EQU
EQU
DCD
ありがとう。
c - Linux でのソフト割り込み処理とハード割り込み処理のタイミング
一部のソフトウェアを物理ハードウェア デバイスの使用から完全なソフトウェア シミュレーションに変換しています。現在、割り込み処理部分を検討しています。
このコードが物理ハードウェアを駆動していたときは、 経由request_irq()
で IRQ を要求していましたが、物理デバイスがなくなったので、「softirq」メソッドを使用するようにコードを変更するつもりでした。
1 つの懸念事項として、softirq は実際には、スケジューラによって呼び出されるまで待機する必要がある単なるイベントであることがわかります。一方、ハードウェア割り込みを使用すると、実行中のアクティビティが即座に中断されます。これは、softirq を使用するようにコードを変換すると、元のコードには存在しなかったスケジューリングの遅延が発生することを意味します。
私の理解は正しいですか?
HW irq のようにすぐに中断するように softirq を登録できる方法はありますか?
そうでない場合は、とにかく無料の HW irq 番号を選択して使用し続けrequest_irq()
、HW デバイスを実行していると思わせるように「だます」方法はありますか?
interrupt - request_irq が成功しました。ハンドラが呼び出されていません
BeagleBoard-xM Rev C のユーザー ボタン用のモジュールの作成に取り組んでいます。今のところ、割り込みハンドラーが呼び出されたとき、つまりユーザー ボタンが押されたときにメッセージを出力しようとしています。
ユーザー ボタンは GPIO ピン 4 に対応します。gpio_to_irq(4) を実行して、ハンドラーを使用して request_irq() に渡す IRQ 番号を取得しています。これは成功しています。実際、これは私の request_irq 呼び出しです。
そして、私の割り込みハンドラは次のようになります。
しかし、ボタンが押されたとき、割り込みハンドラは呼び出されません。これをデバッグする方法についての指針はありますか?
ありがとう!