問題タブ [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.

0 投票する
3 に答える
34769 参照

linux - ioctl() を使用してカーネル モジュールを操作するにはどうすればよいですか?

そこで、linux/timer.h ファイルを使用するカーネル モジュールを作成しようとしています。モジュール内だけで動作するようになりましたが、現在はユーザープログラムから動作させようとしています。

これが私のカーネルモジュールです:

具体的には、ユーザー プログラムで TimerSetup() 関数を呼び出す必要があります。ioctl() を使用する必要があることはわかっていますが、MODULE FILE で TimerSetup() を ioctl() 経由で呼び出せるように指定する方法がわかりません。

また、私の 2 番目の質問: モジュールを insmod でき、正しいメジャー番号で /dev/mytimer に mknod することもできました。しかし、ファイル記述子を取得できるようにopen()しようとすると、-1が返され続けました。これは間違っていると思います。パーミッションが適切であることを確認しました (実際、念のため 777 にしました)... それでも機能しません... 何か足りないものはありますか?

念のため、ユーザープログラムを次に示します。

0 投票する
2 に答える
3188 参照

linux - linux / timer.h setup_timer()有効期限関数が機能していませんか?

したがって、setup_timer()のTimerExpire関数は大きなパニックを引き起こします(以下に投稿します)が、TimerExpire()への通常の関数呼び出しは実際に私の入力を出力します。

誰もが理由を知っていますか?

これはエラー出力です(ちなみに、これはLinuxカーネルであるgumstix verdexエミュレーター上にあります):

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

module - モジュールはどこにありますか?

カーネルモジュールを作成し、以下のコードを使用して/ dev/mytimerエントリを作成しようとしました。

/dev内のモジュールが/dev/ mytimerとして表示されません...しかし、lsmod表示すると、リストにエントリmytimerとして表示されます。

モジュールはどこでどのように見つけることができますか?とにかくそれを/devに入れることはありますか?

ありがとう!

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

c - 引数を間違って渡しますか? ハの質問

タイマーが刻々と切れたときに TimerExpire 関数が最終的に呼び出されると、意味不明な出力が出力されます。理由を知っている人はいますか?しかし、私の IOCTL_MAKE_TIMER の printk 関数は正しく出力されるので、データを間違って渡していることが原因だと思います。

setup_timer() は、最初の引数でタイマーを設定し、2 番目の引数で指定された関数を呼び出すように指示し、データ (3 番目の引数) をその関数に渡します。

私の場合は、TimerExpire(char* data) 関数を呼び出して、char* から kern_arg への final_arg を渡します。kern_arg を関数に直接渡そうとしたこともありました...また、意味不明になりました。

以前 (昨日)、char kern_arg[] の代わりに char* kern_arg があり、それは完全に機能しましたが、安全ではなかったと思います。

誰かが何らかの洞察を提供できれば、それは素晴らしいことです! ありがとう!

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

process - 引数付きのioctlを使用するようにproc_entry->write_procに指示しますか?

私はこれを行ういくつかのサンプルコードを見てきました:

ただし、私のモジュールでは、読み取りと書き込みの代わりにioctlを使用しました。これが私のioctl関数プロトタイプです:

読み取りの場合、私の「fcn」はIOCTL_GET_TIMERであり、書き込みの場合、私の「fcn」はIOCTL_SET_TIMERです。

とにかくこのようなことをするために:

しかし、「args」引数を渡さないのですか?

あるいは、module_read関数とmodule_write関数を記述して、それらにioctlを呼び出させるのがより簡単な方法かもしれません。

助けてくれてありがとう!

0 投票する
2 に答える
5661 参照

linux - Linux カーネル - モジュールを介して動的にシステム コールを追加する

モジュールなどを介してシステムコールを動的に追加する方法はありますか? sys_call_table[]モジュールがインストールされているときに、配列を変更してネイティブではなくオーバーライドされた関数を取得するだけで、既存のシステム コールをモジュールでオーバーライドできる場所を見つけましたが、新しいシステム コールとモジュールでこれを行うことはできますか?

0 投票する
2 に答える
953 参照

linux-kernel - ユーザー モード Linux - モジュールのインストール エラー

ユーザー モード Linux のモジュールで「make」を実行して、単純なメイクファイルをインストールしようとしています。これが私のメイクファイルです:

これをユーザー モードの Linux で実行すると、次のエラーが表示されます。

問題は、 の下にファイルが存在しないことです/lib/modules/。2.6.28 またはビルド用のディレクトリはありません。私が読んだことから、これらは へのシンボリックリンクである必要がありますが、 の下には/usr/src、その下/usr/srcにファイルも表示されません。

0 投票する
0 に答える
637 参照

linux-kernel - ユーザーモードLinuxでモジュールをコンパイルするにはどうすればよいですか

ユーザー モード Linux 用のモジュールをコンパイルするのに苦労しています。ユーザーモードLinuxで非常に基本的なモジュールをコンパイルする基本的な方法が必要なだけで、それを機能させることができないようです。sourceforge で UML のハウツーを調べましたが、うまくいきませんでした。誰かがそれが必要とする実例を持っていますか?

ありがとう!

0 投票する
3 に答える
4547 参照

linux-kernel - 割り込み記述子テーブルの変更

Linux 2.6.26カーネルバージョンを使用しており、カーネルモジュールを使用して割り込み記述子テーブルを変更しようとしています。ここでページフォールトテーブルエントリを変更しようとしているだけです。そのため、元のIDTのコピーを作成し、ページフォールトテーブルエントリのみに変更を加えます。ISRの目的は、元のページフォールトハンドラーを呼び出す前に、ページフォールトの情報を出力することです。しかし、insmodを使用してカーネルをロードすると、カーネルがクラッシュします。つまり、「loadIDTR」関数を使用してカーネルがクラッシュします。さらにデバッグすると、IDTRをロードしてもエントリを変更しないことで、正常に機能することがわかりました。私は考えが足りません。

以下のコードを貼り付けました

0 投票する
3 に答える
10891 参照

linux-kernel - Linux カーネル モジュール - proc ファイルの作成 - proc_root 宣言されていないエラー

カーネル モジュールを使用して proc ファイルを作成および読み取り/書き込みするために、この URL からコードをコピー アンド ペーストすると、proc_root が宣言されていないというエラーが表示されます。これと同じ例がいくつかのサイトにあるので、うまくいくと思います。このエラーが発生する理由はありますか? 私のmakefileには何か違うものが必要ですか?以下は私のmakefileでもあります:

基本的な proc ファイル作成のサンプル コード (最初のテストを行うための直接コピー アンド ペースト): http://tldp.org/LDP/lkmpg/2.6/html/lkmpg.html#AEN769

私が使用しているメイクファイル: