問題タブ [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 - Linuxカーネルの可能性の高い/可能性の低いマクロはどのように機能し、それらの利点は何ですか?
Linuxカーネルのいくつかの部分を調べてみたところ、次のような呼び出しが見つかりました。
また
私はそれらの定義を見つけました:
それらが最適化のためのものであることは知っていますが、どのように機能しますか?そして、それらを使用することで、どのくらいのパフォーマンス/サイズの低下が期待できますか?そして、少なくともボトルネックコード(もちろんユーザースペース)では、面倒な(そしておそらく移植性を失う)価値があります。
c - vmalloc と kmalloc の違いは何ですか?
kmalloc
グーグルで検索したところ、メモリの連続した物理ブロックを取得することが保証されているため、ほとんどの人が の使用を主張していることがわかりました。ただし、kmalloc
必要な連続した物理ブロックが見つからない場合は失敗する可能性もあるようです。
メモリの連続したブロックを持つことの利点は何ですか? 具体的には、システム コールでメモリの連続した物理ブロックが必要になるのはなぜですか? 使えなかった理由はありますか?
最後に、システム コールの処理中にメモリを割り当てる場合、指定する必要がありますか? システムコールはアトミックコンテキストで実行されますか?vmalloc
GFP_ATOMIC
GFP_ATOMIC
割り当ては優先度が高く、スリープしません。これは、割り込みハンドラー、下半分、およびスリープできないその他の状況で使用するフラグです。
GFP_KERNEL
これは通常の割り当てであり、ブロックされる可能性があります。これは、スリープしても安全な場合にプロセス コンテキスト コードで使用するフラグです。
file-io - Linux カーネル モジュールでのファイル I/O
ファイルを開いて読み取る必要がある Linux カーネル モジュールを作成しています。それを達成するための最良の方法は何ですか?
c - 仮想領域からページへ
Linux カーネルでは、 を指定すると、プロセスの のリストにアクセスできtask_struct
ます。これらの が与えられた場合、実際にこの vma に対応するを取得するにはどうすればよいですか?mm
vm_area_struct
vm_area_struct
struct page
mm/memory.c などで関数を探してみましたが、途方にくれました。
編集: アイデアは、vma 内のどのページが現在メモリ内にあり、どのページがそうでないかを見つけることです。しかし、これは宿題の小さな部分であり、自分で解決する必要があるため、誰かにこの方法を教えてもらいたくありません。しかし、この vma に対応するページを見つける方法がわかりません。ページを見つけることができれば、有効な pfn があるかどうかを確認できると思います。
c - Linuxカーネルで関数のポインタから関数の名前を取得する方法は?
Cで関数のポインタから関数の名前を取得する方法は?
編集:実際のケースは次のとおりです。Linuxカーネルモジュールを作成していて、カーネル関数を呼び出しています。これらの関数の一部はポインターであり、カーネル ソースでその関数のコードを検査したいと考えています。しかし、それがどの関数を指しているのかわかりません。システムが失敗すると(カーネルパニック)、現在のコールスタックと関数の名前が画面に出力されるため、それができると思いました。でも、私は間違っていたと思います... 私ですか?
linux - Linux での TCP/IP 接続の最大数の増加
サーバーをプログラミングしていますが、接続数を「無制限」に設定しても帯域幅が飽和していないため、接続数が制限されているようです。
Ubuntu Linux ボックスが一度に開くことができる接続の最大数を増やしたり、削除したりするにはどうすればよいですか? OSがこれを制限していますか、それともルーターまたはISPですか?それとも別のものですか?
c - Linuxカーネル(またはその他の低レベルのもの)は、Cの書き方の「良い」例ですか
「Cの最適な用途は何ですか」という質問に続きます。
Linux カーネルは有名でよく考えられた C プログラムのようです。しかし、それは主流の「ベストプラクティス」C の良い例ですか?
c++ - Ubuntu Eee でカーネルをコンパイルするには何が必要ですか?
LinuxでカスタムUSBドライバーを作成するためのチュートリアルに従っています.g ++を使用して、Ubuntu Eeeを搭載したEee PCでこのことを開発したいと考えています。残念ながら、チュートリアルに従うには、linux/module.h ヘッダー ファイルが必要です。私が理解していることから、これを機能させるにはカーネルをコンパイルする必要があります。以前にカーネルをコンパイルしたことがなく、見つけたすべての指示はデスクトップ Ubuntu 用です。
これを実行してクラス プロジェクトで使用できれば、クラスで追加の単位を取得できるため、Eee でこれを実行しています。
私がフォローしているチュートリアルはここにあります: http://www.linuxjournal.com/article/7353 とここ: http://www.linuxjournal.com/article/4786