問題タブ [kernel-module]
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 - Linux でカーネルとユーザー空間の間で通信および同期するための最良の方法
私の目的は、カーネルからの多くのアクティビティをログに記録することです。このためには、ディスク ベースのファイル システムに書き込む必要があります。
そのため、キャラクターデバイスドライバーと、この仮想デバイスから読み取るユーザー空間プロセスを実装しました。ドライバーはデータをユーザー空間バッファーにコピーし、ユーザー プロセスはそれをファイルに書き込みます。
私の問題は、データを同期する方法です。fifo のカーネル実装で kfifo を使い始めました。そのため、ログを記録する場合は常に、kfifo API を使用してデータを fifo にコピーします。仮想デバイス ドライバーは fifo から読み取り、それをユーザー空間にコピーします。ログに記録されるデータは膨大であるため、プロデューサー コンシューマーなどで同期が必要です。Linux カーネルで使用できるサポートはありますか?
ネットリンクソケットはそのような問題を解決しますか??
linux - Linuxカーネル内のネットワークデバイスのリストを取得する
私はnet/core / dev.cやその他のファイルを調べて、現在構成されているネットワークデバイスのリストを取得する方法を見つけようとしていますが、見つけるのが少し難しいことがわかっています。
最終的な目標は、dev.cのdev_get_statsを使用してネットワークデバイスの統計を取得できるようにすることですが、net_device構造体を取得して渡すことができるように、現在のインターフェイスを知る必要があります。これは、カーネル内で行う必要があります。現在のネットワークデバイスからの統計に関連する新しい/proc/エントリを追加するモジュールを作成しているので、収集できるものから、これはカーネル内で実行する必要があります。
誰かが私にインターフェースを取得する方法を教えてくれたら、それは大いにありがたいです。
c - ioctl コマンドでユーザー空間から構造体をコピーすると失敗するのはなぜですか?
デバイス ドライバーを開発しており、IOCTL を利用する必要があります。残念ながら、ユーザー空間から構造体をコピーすることはできません。コードは次のとおりです (簡素化され、エラー処理が削除されています)。
構造
応用
カーネルモジュール
よろしく、
オリバー・ハナッピ
linux-kernel - ビットバンギングを使用してLiunxカーネルモジュールで約100kHzのクロック信号を生成するにはどうすればよいですか?
GPIOピン(ARMプラットフォーム、mach-davinci、カーネル2.6.27)でクロック信号を生成しようとしています。これは、100kHz付近に何かがあります。そのために優先度の高いタスクレットを使用します。理論は単純で、gpioを高く設定し、5usにudelayを設定し、gpioを低く設定し、別の5usを待ちますが、奇妙な問題が発生します。まず、この5usのdalayを取得することはできませんが、問題はなく、hwのパフォーマンスの問題のように見えるので、period = 40us(〜25kHzを与える)に移動しました。2番目の問題は最悪です。〜10msごとに1回、udelayは通常の3倍長く待機します。今回はヒアビートだと思いますが、プロトコル(これに加えて実装される)の観点からは受け入れられません。たとえば、500msの間、ハートビート手順を一時的に無効にする方法はありますか?それとも私は最初からそれを間違っているのでしょうか?コメントはありますか?
linux - 変更されたカーネルモジュールをリロードする方法
変更されたすべてのカーネルモジュールをリロードするようにシステムに指示するにはどうすればよいですか?(私はいくつかのモジュールでドライバーを開発しています。変更されたすべてのモジュールをリロードするための迅速でエラーのない方法が必要です。)
linux-kernel - Linux カーネル モジュール (lincan) をコンパイルする
Ubuntu 10.10 - 2.6.35.23-generic を使用しています
lincan-module (http://sourceforge.net/projects/ocera/) をコンパイルしたいのですが、思うように動作しません... カーネル モジュールのコンパイルは初めてです。これは私がしました:
まず、lincan-sources をホーム ディレクトリに解凍しました。次に、この出力で「make」を実行しました。
次に、「make install」と入力します。
そして、それは何も起こりませんでした。カーネルモジュールが見つかりません。私は何を間違えたのですか?autoconf.h やその他のファイルがないのはなぜですか? 何かヒントはありますか?ありがとう!
ここで、不足しているファイル (autoconf.h および utsrelease.h) のハードリンクを作成しました。それらは /usr/src/linux-headers-2.6.35.23-generic/include/generated/ にあります
今ではもっとコンパイルされます。これは、表示される最初のエラーです。
linux - Linuxカーネルモジュールでの文字列操作
Linux用のモジュールを書いているときに文字列を操作するのに苦労しています。私の問題は、異なる値を持つintArray[10]があることです。my_readプロシージャでバッファに送信できるように、文字列を生成する必要があります。配列が{0,1,112,20,4,0,0,0,0,0}の場合、出力は次のようになります。
上記の文字列をchar[]配列に配置しようとすると、奇妙な文字がそこに表示されてしまいます
これがコードです
それはこれでうまくいきました:
sprintfに文字列charを掛ける簡単なフラグがあるのだろうか。ありがとう– </ p>
linux - Linux: modpost は何もビルドしません
マシンでカーネル モジュールをビルドする際に問題が発生しています。モジュールをビルドするたびに、modpost は常にモジュールがゼロであると表示します。
この問題をトラブルシューティングするために、テスト モジュール (hello.c) を作成しました。
モジュールの Makefile は次のとおりです。
自分のマシンでビルドすると、次の出力が得られます。
別のマシンでモジュールを作成すると、成功します。
modpost に関する関連ドキュメントを探しましたが、ほとんど見つかりませんでした。modpost がどのようにビルドするかを決定する方法を知っている人はいますか? 私が見逃している可能性のある環境はありますか?
ところで、ここに私が実行しているものがあります:
編集
以下は V=1 で実行された make です:
c - Linux フレームバッファ用 Windows ミラー ドライバ
私が書いているソフトウェアの場合、Linux フレームバッファがいつ更新されるかを知る必要があります。Windows Mirror Drivers のようなものが必要です (詳細については、Wikipedia の Mirror_driver を参照してください)。
周りを見ても何も見つからなかったので、これを達成する方法を探しています。
私が見てきたことから、フレームバッファ固有のモジュールの後にロードされ、fb ops 構造をフックして独自のものを注入し、更新をキャッチするモジュールを作成する必要があります。
誰かが私にヒントを与えることができますか?カーネルモジュールの作成経験はあまりありません。
ありがとうございました!
linux - コンパイルされたカーネルモジュールのバージョンを見つける方法は?
私は、ロードされたモジュールまたは .ko ファイルを照会して、ロードされたカーネル モジュールのバージョンを見つけることが非常に便利な状況にいます。
ソースコードを掘り下げずにこれを行う標準的な方法はありますか?