Pylone Blog
sysfs 経由でモジュールパラメータにアクセス
Tue, 06 Nov 2007 08:36 GMT, Posted by Seiichi SATO
sysfs経由でモジュールパラメータにアクセスする方法を紹介します。
Linux-2.6でモジュールパラメータを定義するマクロがMODULE_PARMからmodule_paramに変更されました。
Linux-2.4のMODULE_PARM:
/* パラメータparamをint型で宣言 */
static int param = 0;
MODULE_PARM(param, "i");
MODULE_PARM_DESC(param, "Description");
Linux-2.6のmodule_param:
/* パラメータparamをint型で宣言 */
static int param = 0;
module_param(param, int, S_IRUGO | S_IWUSR);
MODULE_PARM_DESC(param, "Description");
insmodの引数として指定できるパラメータであることは同じですが、module_paramではsysfsからもパラメータにアクセスできます。
# echo 1 > /sys/module/モジュール名/parameters/param
似たようなことはprocfsでもできますが面倒です。 module_paramであればsysfsの詳細を知らなくても定義するだけでモジュール内の変数をパラメータとしてユーザ空間にexportできます。 デバッグ時など、ioctlを使うまでもない場合には便利じゃないでしょうか?
モジュールではなくカーネルにstaticリンクされててもアクセスできます。
sysfsによってファイルとして見えるパラメータのパーミッションはmodule_paramの引数で指定します。
パラメータとして使う変数が文字列の場合、module_param_string を使います。