linuxカーネルモジュールプログラミングのモジュールパラメータ(四)


マクロ経由module_paramはモジュールをロードするときにモジュールに渡すためのモジュールパラメータを指定します.
module_param(name, type, perm)
nameはモジュールパラメータの名前です
typeはこのパラメータのタイプで、一般的な値:bool、int、charp(文字列型)
permはモジュールパラメータへのアクセス権です
 
permの一般的な値:
S_IRUGO:任意のユーザーが/sys/moduleに表示されるこのパラメータに読み取り権限を持つ
S_IWUSR:rootユーザーが/sys/moduleに表示されるこのパラメータを変更できるようにする
例:
int a =3;//初期化可能、または
char *st:
module_param(a,int,S_IRUGO);
module_param(st,charp,S_IRUGO);
サンプルコードは次のとおりです.
#include <linux/module.h>
#include <linux/init.h>

MODULE_LICENSE("GPL");

static char *name = "David Xie";
static int age = 30;

module_param(age, int, S_IRUGO);
module_param(name, charp, S_IRUGO);
static int hello_init()
{
    printk(KERN_EMERG"name:[%s]
",name); printk(KERN_EMERG"age:[%d]
",age); return 0; } static void hello_exit() { printk(KERN_INFO"module exit
"); } module_init(hello_init); module_exit(hello_exit);

彼のコンパイルと実行は私の前の文章を見ることができます.ここでは説明を繰り返しません.実行結果は以下の通りです.