linux param は、コマンド ライン パラメータを渡すために使用される「module_param」関数を指します。ユーザー モードでのプログラミングでは、カーネル モジュールのパス パラメータを作成するときに、「main()」パラメータを介してコマンド ライン パラメータを渡すことができます。 「module_param()」を通じて。
#このチュートリアルの動作環境: linux5.9.8 システム、Dell G3 コンピューター。
Linux param とは何ですか?
Linux ドライバーでの module_param の使用法
ユーザー モードでプログラムを作成するとき、誰もが main 関数の if パラメーターを使用してプログラムにデータを渡します
#include <stlib.h> #include <stdio.h> int main(int argc,char **argv) { exit(0); }</stdio.h></stlib.h>
ここで、argc はプログラムに渡されるパラメータの数、argv は渡されるパラメータ、最初のパラメータ argv[0] はパスを含む現在のファイルの名前であるため、パラメータの実際の数はプログラムに渡されるのは argc-1 です。
カーネル モジュールには main 関数がないため、モジュールにパラメータを渡すには module_param マクロ定義を使用します。
// 原型 #define module_param(name, type, perm) \ module_param_named(name, name, type, perm)
name: 受信パラメータ名
type: 受信パラメータのタイプ (byte、short、ushort、int、uint、long、ulong、charp、bool、invbool を含む)
perm: これはアクセス許可です。 sysfs 内のリソースへのアクセスについては、以下で詳しく説明します。次の権限タイプは主に uapi/linux/stat.h で定義されています
#define S_IRWXU 00700 // 用户读写可执行权限 #define S_IRUSR 00400 // 用户读权限 #define S_IWUSR 00200 // 用户写权限 #define S_IXUSR 00100 // 用户可执行权限 #define S_IRWXG 00070 // 用户组读写可执行权限 #define S_IRGRP 00040 // 用户组读权限 #define S_IWGRP 00020 // 用户组写权限 #define S_IXGRP 00010 // 用户组可执行权限 #define S_IRWXO 00007 // 其他人可读写执行权限 #define S_IROTH 00004 // 其他人可读权限 #define S_IWOTH 00002 // 其他人可写权限 #define S_IXOTH 00001 // 其他人可执行权限
モジュール コードの記述:
#include <linux> int num = 100; module_param(num,int,S_IRUSR); static int __init param_init(void) { printk("[%s] num = %d\r\n",__FUNCTION__,num); return 0; } static void __exit param_exit(void) { printk("[%s] num = %d\r\n",__FUNCTION__,num) } module_init(param_init); module_exit(param_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("Chen");</linux>
Makefile ファイル:
ifneq ($(KERNELRELEASE),) obj-m:=param.o else KERNEL_DIR:=/lib/modules/$(shell uname -r)/build CURRENT_DIR:=$(shell pwd) ccflags-y:=-std=gnu99 -Wno-declaration-after-statement all: $(MAKE) -C $(KERNEL_DIR) M=$(CURRENT_DIR) modules clean: $(MAKE) -C $(KERNEL_DIR) M=$(CURRENT_DIR) clean endif
プログラムをコンパイルし、モジュールをインストールし、dmesg
モジュールをインストールすると、/sys/module フォルダーにモジュール名に対応するフォルダーが生成されますをクリックして、フォルダーに入ります
フォルダーを入力すると、フォルダー内のパラメーターフォルダーに前のプログラムの num があります。
この図から、カーネルがユーザーがアクセスできるようにファイル システム内に対応するファイルを生成し、モジュール内の module_param マクロ定義の perm がユーザーの読み取り専用を設定していることがわかります。許可なので、num ファイルの許可がそれに対応します。
もちろん、入力パラメータの値を変更するための書き込み権限を設定することもできます。変更後、カーネル モジュール内のパラメータは変更されますが、情報プロンプトは表示されません。
関連する推奨事項: 「Linux ビデオ チュートリアル 」
以上がLinuxパラメータとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。