問題タブ [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 投票する
5 に答える
2391 参照

linux-kernel - ユーザー プログラムと Linux カーネル モジュール間の通信にはどのようなオプションがありますか?

私は Linux カーネル モジュール プログラミングの初心者です。これまで読んだ資料から、ユーザー プログラムがサービスを要求したり、Linux カーネル モジュールと通信したりする方法は 3 つあることがわかりました。

  1. /dev のデバイスファイル
  2. /proc ファイル システム内のファイル
  3. ioctl() 呼び出し

質問: ユーザー プログラムと Linux カーネル モジュール間の通信には、他にどのようなオプションがありますか?

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

c - モジュールからシステムコールを追加できますか?

モジュールからシステムコールを追加できますか?

0 投票する
4 に答える
333 参照

linux - カーネルモジュールにCPU拡張機能を実装する

カーネルモジュールに特定のCPU拡張機能を実装することに関する情報を探しています。私は関連する何かを見つけました:http://www.mirrors.docunext.com/lxr/http/source/arch/mips/kernel/unaligned.c実際、それは私が見つけることができる唯一のソースコードであり、さらに近いです。

基本的に、私は特定のCPU拡張機能で構築されたバイナリのみの共有オブジェクトを持っています。これは、ほとんどの命令セットを備えた少し古いCPUで実行する必要がありますが、派手な新しいものはありません。ええ、私はそれがかなり遅くなることを知っています、しかしそれはSIGILLsでクラッシュするよりはましです。

0 投票する
6 に答える
79740 参照

makefile - カーネルモジュールのクロスコンパイル

Intel x86ホストでARMアーキテクチャ用のhelloworldカーネル(2.6.x)モジュールをクロスコンパイルしようとしています。

ARMのコードソースツールチェーンは次の場所にあります:/ home / ravi / worksheet / hawk / arm-2009q3

カーネルソースは次の場所にあります:/ home / ravi / worksheet / hawk / linux-omapl1

私のMakefile:

makeを実行すると、生成される.koはホストマシンの.koであり、これはmakefileがクロスコンパイラではなくネイティブコンパイラを呼び出していることを意味します。何が間違っているのでしょうか。クロスコンパイラのバイナリは私のパスにあります。

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

linux-kernel - PPC Linux で実行時に syscall テーブルをフックする方法は?

件名: PPC アセンブリ言語 - Linux Loadble カーネル モジュール

詳細:システムコール テーブル フックでカーネルから呼び出されたときにローカル TOC 領域 (r2) にアクセスするにはどうすればよいですか?

syscall テーブル フックを使用してシステム コールをインターセプトし、システム コールに関する情報をログに記録してから、元のハンドラにコールを渡す Linux 用のロード可能なカーネル モジュールを作成しました。これはセキュリティ製品の一部です。私のモジュールは問題なく動作し、32 ビットと 64 ビットの両方のカーネルをすべて x86 ハードウェアで実行する、多種多様な Linux カーネル バージョンとディストリビューションで実行される製品コードです。

このコードを PPC プロセッサ用の Linux で実行できるように移植しようとしていますが、いくつかの問題が発生しました。Linux カーネル ソースを使用すると、システム コール テーブルが PPC でどのように異なる方法で実装されているかを簡単に確認できます。テーブル内のエントリを、自分でコンパイルしたハンドラーの関数アドレスに置き換えることができます。問題ありません。

しかし、ここで私が問題を抱えている問題があります。PPC ABI は、CPU の R2 レジスタに格納されているテーブル オブ コンテンツ (TOC) アドレスと呼ばれるものを使用し、そのレジスタに含まれるアドレス (TOC アドレス) からのオフセットを使用して、モジュールのグローバルおよびローカル データをアドレス指定することを期待しています。これは、コンパイラーが呼び出しを行う前にモジュールの TOC アドレスをレジスターにロードすることを知っているため (または、通常、関数が独自のコードによって呼び出されるため、既にそこにあるため)、関数呼び出しが行われる通常のケースでは正常に機能します。

ただし、(実行時にロードされたカーネル モジュールから) 独自の関数のアドレスをシステム コール テーブルに配置すると、カーネルは、コンパイルされた C コードが期待するものではない R2 値でハンドラーを呼び出すため、コードが取得されます。データにアクセスできなくても制御できます。

この状況を処理する方法を示すサンプルコードを知っている人はいますか? カーネルを再コンパイルできません。これは実行時の syscall テーブル フックの簡単なケースですが、私はまだそれを理解していないか、PPC に固有の例を見つけていません。

アイデアは次のとおりです。

R2 値を保存し、レジスタにローカル TOC アドレスをロードし、コードを実行し、元のハンドラーを呼び出す前に古い値を復元するアセンブリ言語スタブを手作業でコーディングします。私にはこれを行うための PPC アセンブリの経験がありませんし、うまくいくかどうかもわかりません。

TOC を使用せずにコードを生成する魔法の gcc オプション。"-mno-toc"私の PPC6 Linux では動作しない文書化された gcc オプションがあります。システム V.4 と組み込み PowerPC のオプションのみのようです。

どんな助けでも大歓迎です!

ありがとう!

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

makefile - カーネル モジュール Make ファイルの問題

カーネルモジュールを構築しようとするのはこれが初めてです。以下はmakeファイルです。make コマンドの実行時。エラーが発生します

/bin/sh: 構文エラー: "(" 予期しない

make: *** [すべて] エラー 2

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

windows - デバイスなしのデバイス ドライバ?

いくつかのカーネル レベル モジュールを使用する必要があるアプリケーションを作成しています。そのために、アプリを 2 つに分割しました。1 つのユーザー レベル プログラムと 1 つのカーネル レベル プログラムです。

デバイス ドライバーについて読み、いくつかのチュートリアルを実行した後、私は少し混乱しました。

特定のデバイスが関連付けられていないデバイス ドライバーが存在する可能性はありますか? カーネル モードで動作するデバイス ドライバ (カーネル コードなど) 以外に何かありますか?

ウイルス対策プログラムやその他の同様のアプリケーションは、カーネル モードでどのように動作しますか? デバイスドライバーは正しい方法ですか、それとも何か不足していますか?

0 投票する
7 に答える
20059 参照

linux-kernel - Linuxカーネル2.6でCryptoAPIを使用する方法

私はしばらくの間探していましたが、syscallの作成/カーネルランドでLinuxに付属するCryptoAPIを使用する方法に関する十分なドキュメント/例の近くを見つけられませんでした。

誰かが良い情報源を知っているなら、私に知らせてください、私はカーネル空間内でのみSHA1/MD5とBlowfish/AESを行う方法を知りたいです。

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

kernel - FreeBSD で KLD を介して新しいシステム コールを作成する

カーネルローダブルモジュールを介して FreeBSD にシステムコールを追加するための優れた (エントリーレベルの) チュートリアルはありますか? 具体的には、メソッドの必要な形式、プロセスからの情報の取得などです。

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

c - sysfs での属性の作成

/sys ファイルシステムのデバイスに単純な属性を追加しようとしています。非常に簡単に見えましたが、ここまたはここで言及されているヘルパー メソッドはカーネルからエクスポートされていないため、モジュールから使用できませんか? 私は何かが欠けているに違いありません。誰か洞察を提供できますか?