linux 2 6 32下sysctl的使用

2021-09-02 01:13:08 字數 2130 閱讀 1184

struct ctl_table

;struct ctl_table_header *register_sysctl_table(struct ctl_table *table)

fun:註冊sysctl(/proc/sys)下的操作項 

標頭檔案:#include

void unregister_sysctl_table(struct ctl_table_header * header)

fun:登出sysctl(/proc/sys)下的操作項 

標頭檔案:#include

proc_dostring()

讀寫乙個字串

proc_dointvec()

讀寫包含乙個或多個整數的陣列

proc_dointvec_minmax()

類似 proc_dointvec() 但是要確定輸入資料是在 min/max範圍內

proc_dointvec_jiffies ()

讀寫整形陣列 此核心變數以jiffies為單位表示,返回給使用者前先轉為秒數

proc_doulongvec_minmax()

類似proc_dointvec_minmax()但讀取的是長整形

proc_doulongvec_ms_jiffies_minmax()

讀寫長整形陣列 此核心變數以jiffies為單位 返回給使用者前先轉換為毫秒數

sysctl_string()

讀寫乙個字串

sysctl_intvec()

讀寫乙個整形陣列 而且確定其值符合min/max

sysctl_jiffies()

讀寫乙個以jiffies表示的值,然後將其轉化為秒

sysctl_ms_jiffies()

讀寫乙個以jiffies表示的值,然後把它裝化為毫秒

舉個栗子

#include #include #include #include #include int g_catsize=20;

int g_catcolor = 10;

char g_catname[258] = ;

enum;

enum;

int my_proc_dointvec(struct ctl_table *table, int write,

void __user *buffer, size_t *lenp, loff_t *ppos)

int my_proc_dostring(struct ctl_table *table, int write,

void __user *buffer, size_t *lenp, loff_t *ppos)

/*對應的檔案項

* /proc/sys/mycat1/catsize

/proc/sys/mycat1/catcolor

/proc/sys/mycat1/catname

* */

static ctl_table cat_attr_table=,

, , {} //最後一項必須為空

};/*

對應的目錄項:

/proc/sys/mycalt1/

*/static ctl_table mycat=,

{} //最後一項必須為空

};static struct ctl_table_header *cat_table_header;

static int __init test_init(void)

return 0;

}static void __exit test_exit(void)

module_init(test_init);

module_exit(test_exit);

module_license("gpl");

構建linux2 6 32核心樹

系統環境 rhel6 核心版本 注意 下乙個和你當前執行版本一樣的核心,這裡可以看到我當前執行的核心版本是2.6.32 279.el6.x86 64,好,那我就下乙個2.6.32.x的版本 必須有和當前執行的版本有同樣的版本號,否則在載入模組時候insmod error inserting o l ...

linux2 6 32中斷處理流程

1 當發生中斷時,pc指標通過異常向量表跳轉到中斷入口函式asm do irq asm do irq是中斷的c語言總入口函式,它在 arch arm kernel irq.c中定義,宣告如下 asmlinkage void exception asm do irq unsigned int irq,...

linux2 6 32核心訊號量的實現

首先看看訊號量的相關資料結構 include linux semaphore.h struct semaphore 訊號量的初始化 include linux semaphore.h define declare mutex name struct semaphore name semaphore ...