使用module param來向核心模組傳遞引數

2021-08-25 23:46:43 字數 2150 閱讀 8393

如果希望給乙個核心模組傳遞引數,則可以通過module_param()。

引數用moudle_param巨集定義來宣告,它定義在moduleparam.h。

下面是module_param巨集的定義:

/* this is the fundamental function for registering boot/module

parameters. perm sets the visibility in sysfs: 000 means it's

not there, read bits mean it's readable, write bits mean it's

writable. */

#define __module_param_call(prefix, name, set, get, arg, perm) /

/* default value instead of permissions? */ /

static int __param_perm_check_##name __attribute__((unused)) = /

build_bug_on_zero((perm) < 0 || (perm) > 0777 || ((perm) & 2)); /

static char __param_str_##name = prefix #name; /

static struct kernel_param const __param_##name /

__attribute_used__ /

__attribute__ ((unused,__section__ ("__param"),aligned(sizeof(void *)))) /

= #define module_param_call(name, set, get, arg, perm) /

__module_param_call(module_param_prefix, name, set, get, arg, perm)

/* helper functions: type is byte, short, ushort, int, uint, long, ulong, charp, bool or invbool, or *** if you define param_get_***, param_set_*** and param_check_***. */

#define module_param_named(name, value, type, perm) /

param_check_##type(name, &(value)); /

module_param_call(name, param_set_##type, param_get_##type, &value, perm); /

__module_parm_type(name, #type)

#define module_param(name, type, perm) /

module_param_named(name, name, type, perm)

module_param使用了3個引數:變數名,它的型別,以及乙個許可權掩碼。這個巨集定義應當放在任何函式之外,典型的是出現在原始檔的前面,定義如:

static int swap_xy = 0;

static int rotate = 0;

module_param(swap_xy, int, s_irugo);

module_param(rotate, int, s_irugo);

模組引數支援許多態別:

bool

invbool乙個布林型(true或者false)值。

charp乙個字元指標值。記憶體為使用者提供的字串分配,指標因此設定。

intlong

short

uint

ulong

ushort基本的變長整型值。以u開頭的是無符號值。

最後的module_param欄位是乙個許可權值,應當使用中定義的值。這個值控制誰可以訪問這些模組引數在sysfs中的表示。如果perm被設為0,就沒有sysfs項。否則,出現在/sys/module下面,並帶有給定的許可權。使用s_irugo作為引數可以被所有人讀取,但是不能改變。s_irugo|s_iwusr允許root來改變引數。注意,如果乙個引數被sysfs修改,你的模組看到的引數值也改變了,但是你的模組沒有任何其他的通知。因此你應當不要使模組引數可寫。

使用module param來向核心模組傳遞引數

如果希望給乙個核心模組傳遞引數,則可以通過module param 引數用moudle param巨集定義來宣告,它定義在moduleparam.h。下面是module param巨集的定義 this is the fundamental function for registering boot ...

使用module param來向核心模組傳遞引數

如果希望給乙個核心模組傳遞引數,則可以通過module param 引數用moudle param巨集定義來宣告,它定義在moduleparam.h。下面是module param巨集的定義 this is the fundamental function for registering boot ...

使用Python來向MySQL裡插入資料

在python3以上版本中一般使用pymysql庫來操作mysql資料庫。首先匯入pymysql,並且連線上你已經建立好的資料庫。import pymysql self.conn pymysql.connect host self.host,port self.port,user self.user...