在有些情況下,我們可能會需要給我們要載入的核心模組傳引數,如何實現?我們知道在使用者態下程式設計可以通過main()來傳遞命令列引數,核心模組
用到了module_param函式。
module_param用巨集定義來宣告,定義在param.h
>中。其原型為:
引數:
name 是變數名;
type 是變數型別;
perm:訪問引數的許可權
最後的 module_param 欄位是乙個許可權值,,表示此引數在sysfs檔案系統中所對應的檔案節點的屬性。你應當使用 中定義的值. 這個值控制誰可以訪問這些模組引數在 sysfs 中的表示.當perm為0時,表示此引數不存在 sysfs檔案系統下對應的檔案節點。 否則, 模組被載入後,在/sys/module/ 目錄下將出現以此模組名命名的目錄, 帶有給定的許可權.。
許可權在include/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
使用 s_irugo 作為引數可以被所有人讀取, 但是不能改變; s_irugo|s_iwusr 允許 root 來改變引數. 注意, 如果乙個引數被 sysfs 修改, 你的模組看到的引數值也改變了, 但是你的模組沒有任何其他的通知. 你應當不要使模組引數可寫, 除非你準備好檢測這個改變並且因而作出反應.
測試**如下:
#include在超級終端裝載模組hellotest時的命令是:insmod hellotest.ko test=2,即可看到test接收到了引數。#include
#include
#include
static int test;
module_param(test, int, 0644);
static int __init hello_init(void)
static void __exit hello_exit(void)
module_license("gpl");
module_description("test");
module_author("mchgloak");
module_init(hello_init);
module_exit(hello_exit);
module_param(test, int, 0644);第三個引數是許可權。
Springmvc之接受請求引數二
login.do public string login string username,string password,integer age 這裡的獲取請求引數中的username,age的值 其中username的這個註解預設的是required true,因此這個是不可以沒有的 age的這個...
linux 核心引數
sysctl命令可以檢視和 動態地修改核心的執行引數,可用的核心引數在目錄 proc sys 中。sysctl命令對核心引數的修改僅在當前生效,重啟系統後引數丟失。如果希望引數永久生效可以修改配置檔案 etc sysctl.conf,修改後使用sysctl p生效。例子 net.ipv4.tcp s...
linux核心引數
net.ipv4.ip local port range 當核心版本小於3.2,決定的是客戶端的乙個 ip 可用的埠數量,即乙個 ip 最多只能建立 60k 多一點的連線 1025 65535 如果要突破這個限制需要客戶端 機器繫結多個 ip。當核心版本大於等於3.2,決定的是 socket 四元組...