問題タブ [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.
linux - Linux カーネル -- IRQ (proc ファイル システム VS システム コール)
Linux カーネル プロジェクトに取り組んでいます。私のプロジェクトでは、カーネルを変更しcopy_process
て、proc ファイル エントリへの書き込みに応答するモジュールの 1 つから呼び出されるようにしました。本質的に、物事は次のように見えます。
copy_process
私の問題は、次の行に到達したときにカーネルが内部でハングすることです。
これで、この関数が から常に呼び出されていることがわかりましたdo_fork
。これはシステムコール内で発生します。
私の質問:
- これは、procファイルエントリとシステムコールへの書き込みに関係していると考えていますか?
- proc ファイルのエントリへの書き込みに関係する IRQ は何ですか?
- procファイルエントリへの書き込みは、実際にはシステムコールとは異なりますか? つまり、それが処理される方法と、それが呼び出されるコンテキストでですか?
ありがとうございました!
更新: コードの呼び出し方法を、proc ファイルへの書き込み処理中に呼び出される方法から、システム コールから呼び出される方法に変更しました。何も変わっていません。同じ行に到達すると、まだハングします (つまり、tasklist_lock をロックします)。さて、私の問題は、なぜそこにぶら下がっているのですか?この問題を解決するにはどうすればよいですか?
c - cの32ビットOSでscanf()タイプの関数を作成する方法は?
c で os を作成し、アセンブリを 32 ビット プロテクト モードで作成しようとしています。入力ボタンが押されるまでキーボード入力を取得する scanf() タイプの関数を作成しようとしています。入力したものを出力する基本的なキーボード IRQ ハンドラーのセットアップがあり、scanf() 関数を実装したいのですが、キーボード ハンドラーからメイン カーネルに値を返すのに問題があります。
キーボード ハンドラのコードは次のとおりです。
irq が呼び出されたときに、スキャン変数を bool として使用して、文字を配列に入れています。しかし、それを呼び出し元のメインファイルに戻す方法がわかりません。
linux - Qemu のゲスト OS が irq4 で生成する割り込みが多すぎる
qemu-2.3.0 で実行されているゲスト OS での割り込みの問題に直面しています。Ubuntu 14.04 ホストの Qemu エミュレーターで -nographic モードで windriver (Linux kernel-2.6.34.12-grsec) をロードしています。
ホストの詳細:
私のコマンドラインは次のとおりです。
/var/log/kern.log に次のログが記録されています
これを取り除くために検索しましたが、多くの人が /serial/8250.c ファイルの PASS_LIMIT を増やすことを提案しています。この回避策は、kern.log ファイルのエラー メッセージを回避するだけです。
割り込み頻度を停止または遅くする方法を知っている人はいますか?
c - C カーネル - while ループ中に割り込みが機能しない
私はcでゼロからカーネルを作成しています(Linuxではありません。完全にゼロから)、少し問題が発生しました。私はこのコードを持っています:
また、timer_handler は IRQ0 (The PIT) に接続されており、完全に正常に動作します。「すべてのティックを印刷する」というprintlnは問題なく機能し、コードでms変数を印刷すると、正しい量が印刷されます。しかし、sleep 関数を呼び出すと、timer_handler の起動が停止し、無限ループに陥ります。while ループ中に割り込みを発生させる方法はありますか?
linux-kernel - Linux で IRQ を無効にすると rdma_read と rdma_write が失敗するのはなぜですか?
Mellanox インフィニバンド HCA で接続された 2 台のホスト マシンがあります。あるマシン (クライアント) から別のマシン (サーバー) で RDMA 書き込みおよび RDMA 読み取り操作を実行する単純な RDMA アプリケーションを実行しています。各マシンの HCA カードに関連する割り込みを確認するために、次のコマンドを実行しました。
__disable_irq()
サーバー マシンで、これら 4 つの割り込みで関数を使用すると、クライアントによって実行されるすべての RDMA 読み取り/書き込み操作が失敗し、「トランスポート リトライ カウンターが超過しました」というエラー メッセージが表示されることを実験しました。
私の質問は、RDMA 読み取り/書き込み操作がリモート マシンで irq を生成できる理由と時期です。リモート CPU が関与しなければ、いかなる種類の IRQ も実行しないと思いました。
では、なぜこれらの割り込みを無効にすると、これらの操作が失敗するのでしょうか?
timer - Linux での Raspberry Pi のタイマー割り込み
Raspberry Pi でハードウェア タイマー ペリフェラルを設定し、特定の時間 (Linux で実行中) に割り込みを取得することはできますか? ライブラリ/例はありますか?
ワイヤリングPiを介してピンが変更されたときに(管理者権限で実行している場合)irqを取得できることを知っているので、無料のタイマー周辺機器があれば可能だと思われます。
Pi フォーラムのこの投稿は、無料の STC 登録があることを暗示しています。これは情報を提供しますが、「BareMetal」というタグが付けられています。これは、Linux が関与していないことを意味すると思いますか?
背景: これが Linux の得意分野ではないことはわかっていますが、Espruino JS インタープリターにハードウェア タイマー機能を追加することに関心があります。これはもともとマイクロコントローラ向けであり、タイマー IRQ (ソフトウェア PWM、時間指定パルス、その他のビットとボブなど) を介して実行されることを期待するコードが含まれています。スレッドで実行すると、その部分は事実上役に立たなくなります。
operating-system - Mellanox 割り込み mlx4-async@pci:0000 とは何を意味しますか?
[ConnectX VPI PCIe 2.0 5GT/s - IB QDR / 10GigE]
4コアのx86_64コンピューターで実行されているubuntu 3.13.0で、OFEDバージョン4-1.0.0のInfiniBand Mellanoxカードを使用しています。
ibstat
これが私のコンピューターでの結果です
と私のように/proc/interrupts
見える:
mlx4_0-x
各割り込みが各 CPU に関連付けられていることを読みました。私の質問は次のとおりです。最初の割り込みはどういうmlx4-async@pci:0000:01:00.0
意味ですか? opensm
デーモンがまだ実行されていないときに、この割り込みが 5 分ごとに発生することを実験します。