module_param()

  聲明一變量      linux

       module_param(name, type, perm);數組

  name既是用戶看到的參數名,又是模塊內接受參數的變量;ui

  type表示參數的數據類型,是下列之一:byte, short, ushort, int, uint, long, ulong, charp, bool, invbool;spa

  perm指定了在sysfs中相應文件的訪問權限。訪問權限與linux文件愛你訪問權限相同的方式管理,如0644,或使用stat.h中的宏如S_IRUGO表示。指針

  0表示徹底關閉在sysfs中相對應的項。orm

  也能夠使模塊源文件內部的變量名與外部的參數名有不一樣的名字,經過module_param_named()定義。內存

       module_param_named(name, variable, type, perm);ci

   name是外部可見的參數名,字符串

         variable是源文件內部的全局變量名,而module_param經過module_param_named實現,只不過namevariable相同。string

   

  另外一種方法是經過宏module_param_string()讓內核把字符串直接複製到程序中的字符數組內。

  module_param_string(name, string, len, perm);

  這裏,name是外部的參數名,

       string是內部的變量名,

       len是以string命名的buffer大小(能夠小於buffer的大小,可是沒有意義)

       perm表示sysfs的訪問權限(或者perm是零,表示徹底關閉相對應的sysfs)


   若是須要傳遞多個參數能夠經過宏module_param_array()實現。外部參數內部調用;

  module_param_array(name, type, nump, perm);

  name既是外部模塊的參數名又是程序內部的變量名,

       type是數據類型,

       permsysfs的訪問權限。指針nump指向一個整數,其值表示有多少個參數存放在數組name中。值得注意是name數組必須靜態分配。



 模塊參數支持許多類型:

  bool

  invbool

  一個布爾型( true 或者 false)值(相關的變量應當是 int 類型). invbool 類型顛倒了值,因此真值變成 false, 反之亦然.

  charp

  一個字符指針值. 內存爲用戶提供的字串分配, 指針所以設置.

  int

  long

  short

  uint

  ulong

  ushort

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

  數組參數, 用逗號間隔的列表提供的值, 模塊加載者也支持. 聲明一個數組參數, 使用:

  module_param_array(name,type,num,perm);

  這裏 name 是你的數組的名子(也是參數名),

  type 是數組元素的類型,

  num 是一個整型變量,

  perm 是一般的權限值.

  若是數組參數在加載時設置, num 被設置成提供的數的個數. 模塊加載者拒絕比數組能放下的多的值.

本站公眾號
   歡迎關注本站公眾號,獲取更多信息