首頁 運維 linux運維 linux param是什麼

linux param是什麼

Mar 10, 2023 am 08:58 AM
linux param

linux param指的是「module_param」函數,其作用是傳遞命令列參數;在使用者態下編程可以透過「main()」的參數來傳遞命令列參數,而編寫一個核心模組則透過“module_param()”來傳遞參數。

linux param是什麼

本教學操作環境:linux5.9.8系統、Dell G3電腦。

linux param是什麼?

linux驅動程式之module_param的用法

從main函數說起

我們在使用者態寫程式時都喜歡用main函數的如果參數來向程式內傳遞資料

#include <stlib.h>
#include <stdio.h>
int main(int argc,char **argv)
{
 exit(0);
}</stdio.h></stlib.h>
登入後複製

其中argc為傳入程式內參數的個數,argv為傳入的參數,其中的第一個參數argv[0]為目前檔案的含路徑的名字,所以實際傳入程式內的參數個數為argc-1個。

核心模組傳入參數

核心模組中沒有main函數,所以向模組內部傳入參數可以透過module_param這個巨集定義來實現:

// 原型
#define module_param(name, type, perm)     \
		module_param_named(name, name, type, perm)
登入後複製

name:傳入參數名稱
type:傳入參數類型,有byte, short, ushort, int, uint, long, ulong, charp, bool,invbool這幾種類型
perm:這個為sysfs中資源的存取權限,下面再細說,主要有以下權限類型在uapi/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    // 其他人可执行权限
登入後複製

模組程式碼編寫:

#include <linux>

int num = 100;
module_param(num,int,S_IRUSR);

static int __init param_init(void)
{
	printk("[%s] num = %d\r\n",__FUNCTION__,num);
	return 0;
}

static void __exit param_exit(void)
{
	printk("[%s]  num = %d\r\n",__FUNCTION__,num)
}

module_init(param_init);
module_exit(param_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Chen");</linux>
登入後複製

Makefile檔:

ifneq ($(KERNELRELEASE),)
	obj-m:=param.o
else
	KERNEL_DIR:=/lib/modules/$(shell uname -r)/build
	CURRENT_DIR:=$(shell pwd)
	ccflags-y:=-std=gnu99 -Wno-declaration-after-statement
all:
	$(MAKE) -C $(KERNEL_DIR) M=$(CURRENT_DIR) modules
clean:
	$(MAKE) -C $(KERNEL_DIR) M=$(CURRENT_DIR) clean
endif
登入後複製

編譯程序,安裝模組,然後dmesg
linux param是什麼

模組安裝後在/sys/module資料夾下會產生對應模組名字的資料夾,進入資料夾內
linux param是什麼

進入資料夾,資料夾內parameters資料夾內會會有先前程式中的num

linux param是什麼

linux param是什麼

##從圖片中可以看出核心在檔案系統中會產生對應的檔案讓使用者訪問,並且模組中module_param巨集定義中的perm設定了使用者唯讀權限,所以num檔案權限與其對應。

當然你也可以設定可寫權限來改變輸入參數 的值,改變後內核模組中的 該 參數會改變但是不會有任何資訊提示。

#相關推薦:《Linux影片教學

以上是linux param是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Linux實際上有什麼好處? Linux實際上有什麼好處? Apr 12, 2025 am 12:20 AM

Linux適用於服務器、開發環境和嵌入式系統。 1.作為服務器操作系統,Linux穩定高效,常用於部署高並發應用。 2.作為開發環境,Linux提供高效的命令行工具和包管理系統,提升開發效率。 3.在嵌入式系統中,Linux輕量且可定制,適合資源有限的環境。

oracle如何查看實例名 oracle如何查看實例名 Apr 11, 2025 pm 08:18 PM

在 Oracle 中查看實例名的方法有三種:命令行中使用 "sqlplus" 和 "select instance_name from v$instance;" 命令。在 SQL*Plus 中使用 "show instance_name;" 命令。通過操作系統的任務管理器、Oracle Enterprise Manager 或檢查環境變量 (Linux 上的 ORACLE_SID)。

oracle數據庫卸載教程 oracle數據庫卸載教程 Apr 11, 2025 pm 06:24 PM

要卸載 Oracle 數據庫:停止 Oracle 服務,移除 Oracle 實例,刪除 Oracle 主目錄,清除註冊表項(僅限 Windows),刪除環境變量(僅限 Windows)。卸載前請備份數據。

將Docker與Linux一起使用:綜合指南 將Docker與Linux一起使用:綜合指南 Apr 12, 2025 am 12:07 AM

在Linux上使用Docker可以提高開發和部署效率。 1.安裝Docker:使用腳本在Ubuntu上安裝Docker。 2.驗證安裝:運行sudodockerrunhello-world。 3.基本用法:創建Nginx容器dockerrun--namemy-nginx-p8080:80-dnginx。 4.高級用法:創建自定義鏡像,使用Dockerfile構建並運行。 5.優化與最佳實踐:使用多階段構建和DockerCompose,遵循編寫Dockerfile的最佳實踐。

oracle安裝之後如何使用 oracle安裝之後如何使用 Apr 11, 2025 pm 07:51 PM

安裝 Oracle 後,可通過以下步驟使用:創建數據庫實例。連接到數據庫。創建用戶。創建表。插入數據。查詢數據。導出數據。導入數據。

apache80端口被佔用怎麼辦 apache80端口被佔用怎麼辦 Apr 13, 2025 pm 01:24 PM

當 Apache 80 端口被佔用時,解決方法如下:找出佔用該端口的進程並關閉它。檢查防火牆設置以確保 Apache 未被阻止。如果以上方法無效,請重新配置 Apache 使用不同的端口。重啟 Apache 服務。

apache怎麼啟動 apache怎麼啟動 Apr 13, 2025 pm 01:06 PM

啟動 Apache 的步驟如下:安裝 Apache(命令:sudo apt-get install apache2 或從官網下載)啟動 Apache(Linux:sudo systemctl start apache2;Windows:右鍵“Apache2.4”服務並選擇“啟動”)檢查是否已啟動(Linux:sudo systemctl status apache2;Windows:查看服務管理器中“Apache2.4”服務的狀態)啟用開機自動啟動(可選,Linux:sudo systemctl

如何在Debian上監控Nginx SSL性能 如何在Debian上監控Nginx SSL性能 Apr 12, 2025 pm 10:18 PM

本文介紹如何在Debian系統上有效監控Nginx服務器的SSL性能。我們將使用NginxExporter將Nginx狀態數據導出到Prometheus,再通過Grafana進行可視化展示。第一步:配置Nginx首先,我們需要在Nginx配置文件中啟用stub_status模塊來獲取Nginx的狀態信息。在你的Nginx配置文件(通常位於/etc/nginx/nginx.conf或其包含文件中)中添加以下代碼段:location/nginx_status{stub_status

See all articles