問題タブ [linux-kernel]
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-kernel - 複数のネットワーク カードに同じドライバ -- パフォーマンスのボトルネック?
複数の Intel ネットワーク カード (82571EB チップに基づく Intel EXPI9402PT) 用のドライバー e1000e を使用しています。問題は、複数のインターフェイスで最大速度 (1GB) を利用しようとすると、各インターフェイスの速度が低下し始めることです。
特定のパケットを送信するように設計されたカーネル空間に独自のドライバーがあります。次の方法でパケットを割り当てるだけです。
そして彼らはそれらを次のように送ります:
各インターフェイスには、ドライバーの独自のインスタンスがあります。
1 つのインターフェイスについては、120435948 バイト/秒が得られます。
2 つのインターフェイスの場合、61080233 バイト/秒と 60515294 バイト/秒が得られます。
3 つのインターフェイスの場合、28564020 バイト/秒、27111184 バイト/秒、27118907 バイト/秒が得られます。
原因は何ですか?hard_start_xmit 関数は再入可能ですか?
linux - カーネルへの引数
カーネルがブートローダーから取得する必要があるものはありますか?通常、カーネルはシステムを最初から起動することができますが、なぜブートローダーから何かが必要なのですか?私はこのようなカーネルからのブートメッセージを見てきました。
では、渡される変数は正確には何ですか?また、変数はブートローダーからどのように渡されますか?スタックを通過しますか?
java - Linux でプロセスが Receive() 呼び出しでブロック状態で待機しているかどうかを知ることは可能ですか?
私の主な目的は、プロセスが receive() を呼び出してブロックされるまでラウンドロビン方式で 1 つずつ実行し、実行がキュー内の次のプロセスに切り替わるようにすることです。Java でコーディングされたコントローラー アプリケーションがあり、Runtime.getRuntime().exec() を使用してこれらのプロセス (Java アプリケーションでもある) を実行し、Process オブジェクトである戻り値を保持します。
この目的を達成するには、 receive() 呼び出し (またはブロックされているその状態) をキャプチャし、それらをコントローラー (マスター) アプリケーションに伝える必要があります。
これが可能であれば、私はあなたが望むだけ低レベルに行くことができます..私が最初に考えたのは、ドライバーからこの情報を取得し、それをコントローラー Java アプリケーションに伝えることでした。送信および受信操作をキャプチャするLinuxカーネルネットワークモジュールを作成しましたが、知る限り、socket.receive()関数はネットワークドライバーに何も伝えません。
したがって、オプションは、JVMからこの情報を取得するか、Linuxコマンドなどから取得するか、またはLinuxカーネルモジュールを介して取得することだと思いますか?
あなたの提案は何ですか?
linux-kernel - カーネルデバッグ/USB ドライバー開発のための kvm と vmware
現在、gdb を使用したカーネル デバッグ用に vmware Server 2.0 をセットアップしています (このセットアップ ガイドを参照)。
だから私は尋ねます:カーネルデバッグ/ USBドライバー開発のためのkvm対vmware
それぞれの長所と短所は何ですか?
linux-kernel - 2.4 カーネルのマルチスレッド アプリケーションで待機が失敗する
私はマルチスレッド化されたアプリケーションを持っています.1つのスレッドがwait()で死んだ子を収集する責任があり、別のスレッドが要求に応じてフォークでそれらを生成します.
2.4 カーネルと LinuxThread を使用する 1 つのプラットフォームでは、待機が常に ECHILD で失敗することがわかりました。2.4 カーネルでの LinuxThreads の非 POSIX 準拠の実装に問題がある可能性があることがわかりました。以下の説明では、これを解決する方法がないことを示唆しています。
それでも、誰も解決策を知らないことを確認したいと思います。カーネルのパッチでも構いません。
アプリケーションの設計について考えると、fork() と wait() の両方を 1 つのスレッドで (または膨大な労力をかけてのみ) 実行できるとは思えません。
linux - Linux:「本当の」セグメンテーション違反ハンドラーはどこにありますか?
マップされていないアドレスに読み取り/書き込み/ジャンプした場合。
これにより、セグメンテーション違反が発生します。
マップされていないアドレスへの読み取り/書き込みを傍受し(どのように?)、「ユーザーモード」信号をスローするシステム(カーネル)の実際の部分は何ですか?
linux-kernel - 割り込みコンテキストで実行されているカーネルコード/スレッドがスリープできないのはなぜですか?
Robert Loveの次の記事を読んでいます
http://www.linuxjournal.com/article/6916
それは言う
「...ワーク キューがプロセス コンテキストで実行されるという事実について説明しましょう。これは、すべて割り込みコンテキストで実行される他の下位半分のメカニズムとは対照的です。割り込みコンテキストで実行されるコードは、割り込みのため、スリープまたはブロックできません。コンテキストには、再スケジュールするバッキング プロセスがありません。したがって、割り込みハンドラはプロセスに関連付けられていないため、スケジューラがスリープ状態になることはなく、さらに重要なことに、スケジューラが起動することもありません..."
理解できません。私の知る限り、カーネルのスケジューラは O(1) であり、ビットマップを介して実装されます。では、スケジューラが割り込みコンテキストをスリープ状態にし、次のスケジュール可能なプロセスを取得して制御を渡すのを阻止するものは何でしょうか?
build-process - Linux カーネルの make プロセスを取得して、変更されたファイルを再構築します
カスタム Ubuntu カーネルを構築していて、ソース ファイルの 1 つを変更しました。ビルド コマンドを発行すると:
deb は再構築されますが、変更されたソース ファイルは再構築されません。
調子はどう?ソース ファイルを変更するたびに、完全にクリーンなリビルドを行う必要がありますか?
それは意味がありません。
変更されたファイルは./init/main.c
.
注記として、binary-insp8600 は、Inspiron 8600 ラップトップ用に作成したカスタム フレーバーです。
build-process - Linux カーネルからの奇妙なビルド メッセージ
いくつかのソース ファイルを変更した後にカーネルを再構築しようとしたところ、ビルド出力に次のメッセージが表示されました。
II: 新しいモジュール (忙しくて、鼻のうんちを拭いてください)
それはどういう意味ですか?
カーネルでは、他にどんな奇妙さが私を待っていますか?
c - __udivdi3 undefined —それを使用するコードを見つける方法は?
32ビットLinuxカーネルでカーネルモジュールをコンパイルすると、次のようになります。
64ビットシステムではすべて問題ありません。私の知る限り、この理由は、64ビットの整数除算とモジュロが32ビットのLinuxカーネル内でサポートされていないためです。
64ビット演算を発行するコードを見つけるにはどうすればよいですか。「/」が32ビット幅か64ビット幅かを簡単に確認できないため、手動で見つけるのは困難です。「通常の」関数が定義されていない場合、それらをgrepできますが、ここでは不可能です。参照を検索する別の良い方法はありますか?ある種の「マシンコードgrep」?
このモジュールは、数千行のコードで構成されています。すべての行を手動でチェックすることはできません。