問題タブ [softirq]

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.

0 投票する
1 に答える
1432 参照

linux-kernel - softirq ハンドラーの実行時に、カーネルがローカル プロセッサで softirq を無効にする方法

最近は、Robert Love による Linux-Kernel-Development を研究しています。

softirq のメカニズムを説明する段落があります。

softirq ハンドラは、割り込みを有効にして実行され、スリープできません。ハンドラの実行中、現在のプロセッサのソフトIRQは無効になります。ただし、別のプロセッサは他のソフトIRQを実行できます。

「現在のプロセッサのソフトIRQが無効になっています」の意味がわかりません。

これは、__do_softirq を実行しているときに、softirq_pending の一部のビットが再び発生しても、__do_softirq 関数を中断できないということですか? はいの場合、__do_softirq のどのステートメントがこの種の保護を行いますか?

__do_softirq のコードをトレースすると、__local_bh_disable 関数と __local_bh_enable 関数のペアがあることがわかりました。

彼らはローカルのsoftirqを無効にしていますか?

ありがとう。

0 投票する
1 に答える
1407 参照

linux-kernel - ドライバーで CPU に割り込みを固定する方法

softirq、またはその他の下半分をプロセッサに固定することは可能ですか? これがsoftirqコード内から実行できるかどうかは疑問です。ただし、ドライバーの内部では、特定の IRQ をコアに固定することができます。

0 投票する
1 に答える
622 参照

c - 自分の softirq を使用して Linux カーネルを呼び出す方法はありますか

でのシステム コールの動作と同様にint 0x80、カーネル内に独自の ISR を実装して、softirq で想定するint 0x120か、他の softirq プログラム カウンターでユーザー空間からカーネル空間にジャンプできるようにすることは可能ですか?

特権モードでカーネルに入ることは のみに関連付けられていますint 0x80か、または任意の softirq 実装に関連付けられていますか? 自動的に特権モードに入ることができますか、または関連するフラグを書き込むことによって手動で保護モードを無効にして特権モードに入る必要がありますか?

もう1つ、このタイプのISRを実装できる場合、データ交換の最良の方法はレジスタEBX、ECX、EDX、ESI、EDI、およびEBPを使用することですか、それとも他の方法がまだありますか?

Linuxカーネルで独自の新しいsoftirqを定義してトリガーする方法はすでに見ましたか? しかし、私が探していた解決策が得られませんでした。

なぜこれが必要なのかをもう少し明確にします。
ハードウェア周辺機器と直接通信するいくつかのカーネル関数を実装しました。ソフトウェア割り込みを使用してユーザー空間からそれらをトリガーしたいのです。実行時間を短縮する必要があるため、利用可能なドライバー アーキテクチャでシステム コールを使用できません。

0 投票する
1 に答える
518 参照

linux-kernel - irq コンテキストの場合の PID

以下の2つのケースで「current-> pid」は何を出力しますか

1) ハード IRQ コンテキスト

2) ソフト IRQ コンテキスト

IRQ コンテキストとプロセス コンテキストが異なり、IRQ コンテキストの場合は PID が無効でなければならないことはわかっています。しかし、IRQ コンテキストで「current->pid」を出力しようとすると、有効な PID が出力されるため、疑問が生じます。どうか明らかにしてください。

ありがとうございました、

ゴピナート。