6

/sys/module/Linuxについていくつか質問があります

  1. /sys/moduleカーネルのすべてのモジュールが含まれていますか

  2. /sys/module/xxx/parametersカーネル モジュール xxxx のすべてのパラメータが含まれていますか

  3. /sys/module/xxx/parameters/yyyyカーネルモジュール xxxx のパラメーター yyyy のリアルタイム値が含まれていますか?

  4. 特定のカーネルモジュールでパラメーターが変更された場合、リアルタイムでこの変更を検出する方法は? 与えられたカーネル モジュール パラメータの変更をリアルタイムで検出する C アプリケーション (ユーザー空間) またはシェル スクリプトを開発したいと考えています。

4

3 に答える 3

6

1) はい、/sys/module には確かにすべてのモジュールがあります。

2) いいえ、/sys/module/xxx/parameters には、モジュールがエクスポートしたいパラメーターしかありません。つまり、モジュールからカーネル モジュール パラメーターをエクスポートする場合は、次を使用する必要があります。

module_param(test, bool, 0600);

最後のパラメーターはゼロ以外で、ファイル「/sys/module/xxx/parameters/test」の許可を意味します。

3) いいえ、カーネル モジュール パラメータの値はほとんど静的であり、他の場所で変更されることはめったにありません。

4) カーネル モジュールはユーザー空間アプリケーションに通知します。

于 2012-11-13T06:02:59.103 に答える
2

パラメータは入力値であり、状態値ではありません。パラメータの受信側が起動した後にパラメータを変更することはできません。

実行時のカーネルの動作を変更したい場合は、/proc/sys を使用する必要があります。ここを参照してください: http://tournasdimitrios1.wordpress.com/2011/02/07/passing-parameters-to-the-kernel-at-run-time-time-on-linux/

于 2012-11-07T08:26:22.633 に答える
1

「最後に (これは重要なことですが)、書き込み可能なパラメーターを定義することを選択し、モジュールがロードされている間に実際に書き込みを行った場合、値が変更されたことはモジュールに通知されません。つまり、コールバックや通知はありません。変更されたパラメーターのメカニズム; コードが実行されている間、値はモジュール内で静かに変化し、その変数に新しい値があるという事実に気づきません。

モジュールへの書き込みアクセスと何らかの通知メカニズムが本当に必要な場合は、おそらくパラメーターを使用したくないでしょう。その機能を実現するためのより良い方法があります。」[1]

基本的に、変更を常にポーリングするメカニズムが必要です。または、IOCtl アプローチを開発し、デバイスを登録する他のデバイスと同時に、デバイスを char デバイスとして登録する必要があります (Linux はその点で精神異常です)。

Bryan Wilcutt 「自分の時間を大切にしないなら、Linux は無料です。」 - わからない

[1] https://www.linux.com/learn/linux-training/28065-the-kernel-newbie-corner-everything-you-wanted-to-know-about-module-parameters

于 2015-11-11T16:22:19.830 に答える