向kernel module 傳遞引數(Passing Arugments to Kernel Module)
在Linux中, 建立hello2.c, 檔案內容如下:
#include <linux/init.h>
#include <linux/module.h>
//step 1 include a file
#include <linux/moduleparam.h>
//step 2 create a variable
int param_var = 0;
//step 3 register (macro)
//module_param(name_var, type, permissions) : register variable name_var
module_param(param_var, int, S_IRUSR | S_IWUSR); // this variable can be read and written to
void display() {
printk(KERN_ALERT "Test:: param_var = %d", param_var);
}
/*
R stands for reading, W stands for writing , X stands for execution(第三個字母(不看下劃線)), USR stands for user, GRP stands for group user
S_IRUSR
S_IWUSR
S_IXUSR
S_IRGRP
S_IWGRP
S_TRUSR | S_TWUSR : sue combination
*/
stactic void hello_init(void)
//purpose is to register functionalities & allocate resources
printk(KERN_ALERT "Test:: Hello world \n")
return 0;
}
static void hello_exit(void) {
printk(KERN_ALERT "Test:: Good bye");
}
module_init(hello_init);
module_exit(hello_exit);
接下來, make, 編譯上述檔案。 我們需要切換到超級使用者才可以。 sudo。
這樣我們生成了module。 下面將其插入到kernel中去。 我們需要module傳遞引數(param_var)具體的值。
指令如下:
insmod hello2.ko param_var = 213t6
然後我們dmsg, 則出現結果(略)。
我們也可以使用一個陣列來儲存我們想要儲存的值, 程式如下:
hello3.c
#include <linux/init.h>
#include <linux/module.h>
//step 1 include a file
#include <linux/moduleparam.h>
//step 2 create a variable
int param_var[3] = {0, 0, 0};
//step 3 register (macro)
//module_param(name_var, type,NULL, permissions) : register variable name_var
module_param_array(param_var, int, 3, S_IRUSR | S_IWUSR); // this variable can be read and written to , 3 position the number of parameters
void display() {
printk(KERN_ALERT "Test:: param_var = %d", param_var[0]);
printk(KERN_ALERT "Test:: param_var = %d", param_var[1]);
printk(KERN_ALERT "Test:: param_var = %d", param_var[2]);
}
/*
R stands for reading, W stands for writing , X stands for execution(第三個字母(不看下劃線)), USR stands for user, GRP stands for group user
S_IRUSR
S_IWUSR
S_IXUSR
S_IRGRP
S_IWGRP
S_TRUSR | S_TWUSR : sue combination
*/
stactic void hello_init(void)
//purpose is to register functionalities & allocate resources
printk(KERN_ALERT "Test:: Hello world \n")
return 0;
}
static void hello_exit(void) {
printk(KERN_ALERT "Test:: Good bye");
}
module_init(hello_init);
module_exit(hello_exit);
執行:
接下來, make, 編譯上述檔案。 我們需要切換到超級使用者才可以。 sudo。
這樣我們生成了module。 下面將其插入到kernel中去。 我們需要module傳遞引數(param_var)具體的值。
指令如下:
insmod hello3.ko param_var = 12, 13, 356
等等, 步驟同上。
執行完成之後, remove the module。
rmmodule hello3.ko
然後顯示:
dmsg
顯示內容略。
相關文章
- Bootloader傳引數到Kernelboot
- Kernel Module實戰指南(四):系統呼叫劫持
- Configure the hangcheck-timer Kernel ModuleGC
- 核心引數kernel.shmall和kernel.shmmaxHMM
- Xamarin.Android模擬器提示HAX kernel module is not InstalledAndroid
- 如何處理VirtualBox啟動錯誤訊息:The vboxdrv kernel module is not loaded
- linux引數之/proc/sys/kernel詳解Linux
- react篇章-React 元件-向元件傳遞引數React元件
- 向路由元件傳遞引數2種方法路由元件
- Linux 核心(kernel)引數 sysctl.conf , shmmaxLinuxHMM
- 引數傳遞
- Linux下kernel.shmall引數的設定(zt)Linux
- JNI傳遞引數
- Mybatis引數傳遞MyBatis
- Linux核心引數(如kernel.shmmax)及Oracle相關引數調整LinuxHMMOracle
- 在安裝RAC時需要配置的幾個kernel引數
- JSP向後臺傳遞引數的四種方式JS
- module hmrclient is not a registered callable moduleclient
- React事件傳遞引數React事件
- 路由元件傳遞引數路由元件
- JS的方法引數傳遞(按值傳遞)JS
- [20210826]核心引數kernel.sem.txt
- 向檢視傳遞變數變數
- C#引數傳遞之值引數C#
- Linux裝置樹的傳遞及Kernel中對裝置樹的分析Linux
- [ Module ] 環境變數管理工具 Module 安裝和使用變數
- dialog如何向其href指定的頁面傳遞引數?
- Hugemem Kernel ExplainedAI
- [譯] Ruby 2.6 Kernel 的system 方法增加是否丟擲異常引數。
- Library Module上傳Jcenter詳解
- 請求引數的傳遞
- Shell學習【引數傳遞】
- JavaScript函式傳遞引數JavaScript函式
- out,ref,params引數傳遞
- 函式的引數傳遞函式
- 利用閉包傳遞引數
- SpringMVC之引數傳遞SpringMVC
- java 中引數的傳遞Java