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

linux-kernel - file_operations 質問、書き込み用にファイルを開いたプロセスがそのファイルを閉じることを決定したかどうかを知るにはどうすればよいですか?

現在、単純な「マルチキャスト」モジュールを作成しています。

書き込み用に proc ファイルシステム ファイルを開くことができるプロセスは 1 つだけであり、残りのプロセスは読み取り用に開くことができます。これを行うには、inode_operation .permission コールバックを使用します。操作をチェックし、誰かが書き込み用にファイルを開いていることを検出したら、フラグをオンに設定します。

書き込み用にファイルを開いたプロセスがファイルを閉じることを決定したかどうかを検出する方法が必要です。これにより、フラグをオフに設定して、他の誰かが書き込み用に開くことができます。

現在、誰かが書き込みのために開いている場合に備えて、そのプロセスの current- >pidを保存し、.close コールバックが呼び出されたときに、そのプロセスが以前に保存したプロセスであるかどうかを確認します。

それを行うより良い方法はありますか?pidを保存せずに、おそらく現在のプロセスが開いているファイルとその許可を確認しています...

ありがとう!

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

linux-kernel - IOシステムに情報を保存する

/procファイルシステムを使用して「マルチキャスト」をシミュレートするカーネルモジュールを作成する必要があります。

基本的に、次のシナリオをサポートする必要があります。

1)/procファイルへの1回の書き込みアクセスと/procファイルへの多数の読み取りアクセスを許可します。

2)モジュールには、最後に正常に書き込まれた内容のバッファーが必要です。各書き込みは、すべてのリーダーからの読み取りと一致する必要があります。

シナリオ2を考えてみましょう。ライターが何かを書き込み、2つのリーダー(AとB)があります。Aはバッファーの内容を読み取り、次にAは再度読み取ろうとしました。この場合、wait_queueに入り、次のメッセージを待つ必要があります。 、同じバッファを再度取得することはできません。

現在のバッファをすでに読み取っているすべてのpidのマップを保持する必要があります。それらが再度読み取ろうとしてバッファが変更されなかった場合は、新しいバッファができるまでブロックする必要があります。地図なしでその情報を保存できる方法があることを理解しようとしています。I / Oシステム内に冗長なフィールドがいくつかあると聞きました。これを使用して、プロセスが現在のバッファーを既に読み取っている場合にフラグを立てることができます。

誰かが私にそのフィールドを探すべき場所のヒントを教えてもらえますか?pidとバッファの「マップ」を保持せずに現在のプロセスに関する情報を保存するにはどうすればよいですか?

ありがとう!

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

linux-kernel - Linuxカーネルモジュールからローカルシンボルを壊さずに取り除くにはどうすればよいですか?

--strip-debugまたは--strip-unneededを実行すると、.koすべての関数名がでリストされます。実行すると、ロードを拒否するカーネルモジュールがあります。nmstrip foo.ko

モジュールのロードに必要のないすべてのシンボルを削除して、APIを簡単にリバースエンジニアリングできないようにする簡単なショートカットを知っている人はいますか?

PS:あなたがたすべてのオープンソースの大物宣教師のために。これは一般の人々が決して使用しないものなので、質問をGPLの炎上戦争に変える必要はありません。

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

linux-kernel - How can I uniquely identify users trying to open() a kernel module?

I'm working on a kernel module and I'm trying to uniquely identify each one of the users trying to open() the module (can be either processes or threads).

What is the best way to identify them? Is there an ID I can get from a system call?

I wish to get all users in a list that specifies whether they're trying to open the module for read/write, and I need to know which one tried acting.

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

linux-kernel - 信号が送られるとカーネルはスタックを取得します

私は、カーネルがそれらの間で同期しなければならないリーダーとライターと、すでにマッサージを読んでいるブロックライターを書きます

私が待ち行列にいるとき、私は合図を受け取るので、休憩をします

}

{/ * *ライターを閉じると、他のライターが*許可を入力できるようになります* /

}

そして私の近くは何もしません...

私は何を間違えましたか?

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

c - Linux カーネル モジュールの Linux リアル モード インターフェイス

組み込みシステムでときどき呼び出す必要がある BIOS 関数があり、LRMI を使用して、ユーザー空間プログラムから正常に呼び出すことができました。ここで、ロード可能なカーネル モジュールから同じことを行いたいと考えています。

これを行う方法はありますか?多分他のライブラリ?

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

linux - CMOS_WRITEが機能しない原因として考えられるものは何ですか?

私は数日間RTCの問題に戸惑っていました:RTCレジスタに書き込めませんでした。

以下はコードスニペットであり、reg(最後の行)から読み取った値は、regに書き込んだ値とは常に異なります。誰でも私がこれを理解するのを手伝ってくれる?

私はLinux2.6カーネルを使用しており、試したプラットフォームはPPCとx86でした。

更新: Amardeepのコメントごとにさらに多くのコードスニペット...

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

kernel-module - カーネル モジュールにシステム コールをインストールする方法

未使用のシステム コールの場所に新しいシステム コールをインストールし、ユーザー空間からの指示を待ちたい。私はそれを行う方法を知りません。

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

linux - Linuxカーネルモジュールから使用カウントを取得するには?

開発中のカーネルモジュールの使用回数に問題があります。デバッグ用に印刷したいと思います。モジュールコードからどのように取得できますか?

問題のカーネル バージョン - Linux 2.6.32

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

linux-kernel - find_module の使用方法

find_module()Linuxカーネルの機能の使い方は?ドキュメントには、「module_mutex を保持する必要がある」と記載されています。

  1. 別のモジュールへのポインターを検索する前に、モジュール コードでロックを取得する必要があるということですか?
  2. このミューテックスがモジュール以外のカーネル コードによってロックされるのはいつですか?

環境

連携して動作する一連のカーネル モジュールをデバッグしています。

モジュール A は、モジュール B の関数を呼び出します。モジュール A の関数 C のある時点で、モジュール B の使用カウントが無効になります。これはモジュール B の関数では発生していないと判断しました。C からモジュール B の使用カウントをデバッグしたいと思います。これを行うには、find_module()を使用して B へのポインターを取得します。