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 ...