哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux驅(qū)動開發(fā)-安裝驅(qū)動參數(shù)傳遞

DS小龍哥-嵌入式技術(shù) ? 2022-09-17 15:30 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

【摘要】 Linux驅(qū)動安裝時(shí)也支持傳遞參數(shù),和命令行上運(yùn)行的命令原理類似。 只不過在編寫驅(qū)動的時(shí)候,需要在驅(qū)動代碼里提前將相關(guān)信息聲明好才可以使用。 這篇文章就介紹如果在命令安裝驅(qū)動時(shí),傳遞參數(shù)給驅(qū)動代碼,演示各種類型的參數(shù)傳輸情況。

一、簡介

在Linux下進(jìn)行C語言開發(fā)時(shí),經(jīng)常在命令行傳遞參數(shù)給C程序,常見的Linux命令也是需要傳參的,這樣用起來就很靈活,根據(jù)不同的參數(shù)可以執(zhí)行不同的效果。

Linux驅(qū)動安裝時(shí)也支持傳遞參數(shù),和命令行上運(yùn)行的命令原理類似。

只不過在編寫驅(qū)動的時(shí)候,需要在驅(qū)動代碼里提前將相關(guān)信息聲明好才可以使用。

這篇文章就介紹如果在命令安裝驅(qū)動時(shí),傳遞參數(shù)給驅(qū)動代碼,演示各種類型的參數(shù)傳輸情況。

在驅(qū)動代碼里聲明傳入?yún)?shù)的類型、權(quán)限,接收的變量名稱。

module_param(變量的名稱,類型,權(quán)限)

二、在驅(qū)動代碼里聲明傳遞參數(shù)的格式

/*傳遞整型類型數(shù)據(jù)*/
int int_data = 0;
module_param(int_data, int ,0664);
MODULE_PARM_DESC(int_data, "是一個(gè)整型的參數(shù).");

/*傳遞指針類型數(shù)據(jù)*/
char *p_data = NULL;
module_param(p_data, charp, 0664);
MODULE_PARM_DESC(p_data, "是一個(gè)指針類型數(shù)據(jù).");

/*
傳遞數(shù)組類型數(shù)據(jù)
module_param_array(數(shù)組名, 元素類型, 元素個(gè)數(shù)(取地址), 權(quán)限);
*/
int array_data[3] = {};
int num = 3;
module_param_array(array_data, int, &num, 0664);
MODULE_PARM_DESC(array_data, "是一個(gè)數(shù)組類型數(shù)據(jù).");

/*
傳遞字符串: module_param_string
(傳遞參數(shù)時(shí)的字符串名稱, 字符串名稱, 字符串大小, 權(quán)限);
*/
char str_data[12] = {};
module_param_string(str_data, str_data, sizeof(str_data), 0664);
MODULE_PARM_DESC(str_data, "是一個(gè)字符串類型數(shù)據(jù).");

三、完整代碼示例

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

/*傳遞整型類型數(shù)據(jù)*/
int int_data = 0;
module_param(int_data, int ,0664);
MODULE_PARM_DESC(int_data, "是一個(gè)整型的參數(shù).");

/*傳遞指針類型數(shù)據(jù)*/
char *p_data = NULL;
module_param(p_data, charp, 0664);
MODULE_PARM_DESC(p_data, "是一個(gè)指針類型數(shù)據(jù).");

/*
傳遞數(shù)組類型數(shù)據(jù)
module_param_array(數(shù)組名, 元素類型, 元素個(gè)數(shù)(取地址), 權(quán)限);
*/
int array_data[3] = {};
int num = 3;
module_param_array(array_data, int, &num, 0664);
MODULE_PARM_DESC(array_data, "是一個(gè)數(shù)組類型數(shù)據(jù).");

/*
傳遞字符串: module_param_string
(傳遞參數(shù)時(shí)的字符串名稱, 字符串名稱, 字符串大小, 權(quán)限);
*/
char str_data[12] = {};
module_param_string(str_data, str_data, sizeof(str_data), 0664);
MODULE_PARM_DESC(str_data, "是一個(gè)字符串類型數(shù)據(jù).");

static int __init tiny4412_param_dev_init(void) 
{
	printk("安裝驅(qū)動成功.\n");
	printk("int_data=%d\n",int_data);
	printk("p_data=%s\n",p_data);
	printk("array_data=%d\n",array_data[0]);
	printk("str_data=%s\n",str_data);
	return 0;
}

static void __exit tiny4412_param_dev_exit(void) 
{
	printk("卸載驅(qū)動成功.\n");
}

module_init(tiny4412_param_dev_init);
module_exit(tiny4412_param_dev_exit);

MODULE_LICENSE("GPL");
MODULE_AUTHOR("wbyq");

四、查看驅(qū)動提示信息

[root@wbyq code]#modinfo led_drv.ko 
filename:       led_drv.ko
license:        GPL
author:         wbyq
depends:        
vermagic:       3.5.0-FriendlyARM SMP preempt mod_unload ARMv7 p2v8 
parm:           str_data:是一個(gè)字符串類型數(shù)據(jù).
parm:           array_data:是一個(gè)數(shù)組類型數(shù)據(jù).
parm:           p_data:是一個(gè)指針類型數(shù)據(jù).
parm:           int_data:是一個(gè)整型的參數(shù).

五、安裝驅(qū)動時(shí)傳遞參數(shù)

[root@wbyq code]#insmod led_drv.ko str_data="123" int_data=666 p_data="789" array_data=6,7,8
[ 2692.220000] 安裝驅(qū)動成功.
[ 2692.220000] int_data=666
[ 2692.220000] p_data=789
[ 2692.220000] array_data=6
[ 2692.220000] str_data=123

六、驅(qū)動安裝成功在sys目錄下查看傳遞的參數(shù)

[root@wbyq code]#cd /sys/module/led_drv/parameters/
[root@wbyq parameters]#ls
array_data  int_data    p_data      str_data
[root@wbyq parameters]#cat array_data 
6,7,8
[root@wbyq parameters]#cat int_data 
666
[root@wbyq parameters]#cat p_data 
789
[root@wbyq parameters]#cat str_data 
123
[root@wbyq parameters]#

七、權(quán)限定義

用戶
#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
image-20220124164854786

示例代碼:

/*傳遞整型類型數(shù)據(jù)*/
int int_data = 0;
module_param(int_data, int ,S_IRUSR|S_IWUSR|S_IXUSR);
MODULE_PARM_DESC(int_data, "是一個(gè)整型的參數(shù).");

/*傳遞指針類型數(shù)據(jù)*/
char *p_data = NULL;
module_param(p_data, charp, S_IRUSR|S_IWUSR|S_IXUSR);
MODULE_PARM_DESC(p_data, "是一個(gè)指針類型數(shù)據(jù).");
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 驅(qū)動
    +關(guān)注

    關(guān)注

    12

    文章

    1988

    瀏覽量

    88680
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11806

    瀏覽量

    219493
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4975

    瀏覽量

    74334
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何理解Linux內(nèi)核中的PCIe驅(qū)動

    各異的芯片組,加上各種 PCI 設(shè)備自身獨(dú)特的功能需求,Linux 內(nèi)核中的 PCI 支持遠(yuǎn)比我們希望的要復(fù)雜得多。今天這篇文章,我們將從驅(qū)動開發(fā)的視角,梳理 Linux PCI 設(shè)備
    的頭像 發(fā)表于 04-11 17:22 ?1180次閱讀

    Linux內(nèi)核驅(qū)動開發(fā)的技術(shù)核心精要

    嵌入式Linux驅(qū)動開發(fā)是連接硬件與操作系統(tǒng)的關(guān)鍵環(huán)節(jié)。隨著內(nèi)核演進(jìn)(如Linux 6.13)和硬件復(fù)雜度提升,開發(fā)者需掌握并發(fā)控制、中斷分
    發(fā)表于 03-10 13:56

    迅為Hi3403開發(fā)驅(qū)動教程全面上線,開啟嵌入式Linux開發(fā)新篇章!

    迅為iTOP-Hi3403開發(fā)linux驅(qū)動教程全面上線,開啟嵌入式Linux開發(fā)新篇章!
    的頭像 發(fā)表于 12-18 14:23 ?850次閱讀
    迅為Hi3403<b class='flag-5'>開發(fā)</b>板<b class='flag-5'>驅(qū)動</b>教程全面上線,開啟嵌入式<b class='flag-5'>Linux</b><b class='flag-5'>開發(fā)</b>新篇章!

    Linux驅(qū)動開發(fā)的必備知識

    驅(qū)動框架進(jìn)行開發(fā)。 6、調(diào)試技能: 掌握內(nèi)核調(diào)試工具,如 KDB、KGDB、printk 等。 能夠分析內(nèi)核日志,定位驅(qū)動程序中的問題。
    發(fā)表于 12-04 07:58

    迅為iTOP-3568開發(fā)板?Linux驅(qū)動開發(fā)實(shí)戰(zhàn):menuconfig圖形化配置實(shí)驗(yàn)

    迅為iTOP-3568開發(fā)板?Linux驅(qū)動開發(fā)實(shí)戰(zhàn):menuconfig圖形化配置實(shí)驗(yàn)
    的頭像 發(fā)表于 11-24 15:29 ?902次閱讀
    迅為iTOP-3568<b class='flag-5'>開發(fā)</b>板?<b class='flag-5'>Linux</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)</b>實(shí)戰(zhàn):menuconfig圖形化配置實(shí)驗(yàn)

    【迅為工業(yè)RK3568穩(wěn)定可靠】itop-3568開發(fā)Linux驅(qū)動開發(fā)實(shí)戰(zhàn):RK3568內(nèi)核模塊符號導(dǎo)出詳解

    【迅為工業(yè)RK3568穩(wěn)定可靠】itop-3568開發(fā)Linux驅(qū)動開發(fā)實(shí)戰(zhàn):RK3568內(nèi)核模塊符號導(dǎo)出詳解
    的頭像 發(fā)表于 11-21 13:25 ?1562次閱讀
    【迅為工業(yè)RK3568穩(wěn)定可靠】itop-3568<b class='flag-5'>開發(fā)</b>板<b class='flag-5'>Linux</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)</b>實(shí)戰(zhàn):RK3568內(nèi)核模塊符號導(dǎo)出詳解

    【免費(fèi)送書】成為硬核Linux開發(fā)者:《Linux 設(shè)備驅(qū)動開發(fā)(第 2 版)》

    Linux系統(tǒng)的設(shè)備驅(qū)動開發(fā),一直給人門檻較高的印象,主要因內(nèi)核機(jī)制抽象、需深度理解硬件原理、開發(fā)調(diào)試難度大所致。2021年,一本講解驅(qū)動
    的頭像 發(fā)表于 11-18 08:06 ?1745次閱讀
    【免費(fèi)送書】成為硬核<b class='flag-5'>Linux</b><b class='flag-5'>開發(fā)</b>者:《<b class='flag-5'>Linux</b> 設(shè)備<b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)</b>(第 2 版)》

    【書籍評測活動NO.67】成為硬核Linux開發(fā)者:《Linux 設(shè)備驅(qū)動開發(fā)(第 2 版)》

    星期內(nèi)提交不少于2篇試讀報(bào)告要求300字以上圖文并茂。4、試讀報(bào)告發(fā)表在電子發(fā)燒友論壇>>社區(qū)活動專版標(biāo)題名稱必須包含 【「Linux 設(shè)備驅(qū)動開發(fā)(第 2 版)」閱讀
    發(fā)表于 11-17 17:52

    迅為3568開發(fā)板從零學(xué)習(xí)Linux驅(qū)動開發(fā):迅為一站式資料包如何讓我效率翻倍

    迅為3568開發(fā)板從零學(xué)習(xí)Linux驅(qū)動開發(fā):迅為一站式資料包如何讓我效率翻倍
    的頭像 發(fā)表于 11-05 11:16 ?517次閱讀
    迅為3568<b class='flag-5'>開發(fā)</b>板從零學(xué)習(xí)<b class='flag-5'>Linux</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)</b>:迅為一站式資料包如何讓我效率翻倍

    迅為RK3568開發(fā)安裝燒錄工具-安裝 RKTool 驅(qū)動

    在燒寫鏡像之前首先需要安裝 RKTool 驅(qū)動。 RKTool 驅(qū)動在網(wǎng)盤資料“iTOP-3568 開發(fā)板\\\\01_【iTOP-RK3568
    發(fā)表于 05-29 10:47

    itop-3568開發(fā)驅(qū)動開發(fā)指南-實(shí)驗(yàn)程序的編寫

    驅(qū)動例程\\\\02。 本章實(shí)驗(yàn)將編寫 Linux 下的驅(qū)動傳參實(shí)例代碼,通過“insmod”命令進(jìn)行參數(shù)傳遞,并將相應(yīng)的
    發(fā)表于 05-19 10:26

    如何在Ubuntu上安裝NVIDIA顯卡驅(qū)動?

    作者:算力魔方創(chuàng)始人/英特爾創(chuàng)新大使劉力 一,前言 對于使用NVIDIA顯卡的Ubuntu用戶來說,正確安裝顯卡驅(qū)動是獲得最佳圖形性能的關(guān)鍵。與Windows系統(tǒng)不同,Linux系統(tǒng)通常不會自動
    的頭像 發(fā)表于 05-07 16:05 ?2827次閱讀
    如何在Ubuntu上<b class='flag-5'>安裝</b>NVIDIA顯卡<b class='flag-5'>驅(qū)動</b>?

    比較好的系統(tǒng)驅(qū)動安裝軟件

    比較好的 系統(tǒng)驅(qū)動安裝軟件 驅(qū)動人生海外版
    發(fā)表于 05-06 16:06 ?0次下載

    基于RK3576開發(fā)板的USB驅(qū)動安裝

    在使用芯片的ADB接口(進(jìn)行ADB調(diào)試或者固件燒錄)前需要安裝指定USB驅(qū)動,請按以下指引執(zhí)行驅(qū)動安裝。
    的頭像 發(fā)表于 04-21 17:15 ?1321次閱讀
    基于RK3576<b class='flag-5'>開發(fā)</b>板的USB<b class='flag-5'>驅(qū)動</b><b class='flag-5'>安裝</b>

    Linux環(huán)境再升級:PLIN驅(qū)動程序正式發(fā)布

    PLIN驅(qū)動程序現(xiàn)已正式發(fā)布,本文將展示如何安裝PLIN驅(qū)動程序,以及如何在Linux環(huán)境下進(jìn)行基本的PLIN通信操作,確保您能夠快速掌握并應(yīng)用這一新工具。
    的頭像 發(fā)表于 04-21 15:29 ?1215次閱讀
    <b class='flag-5'>Linux</b>環(huán)境再升級:PLIN<b class='flag-5'>驅(qū)動</b>程序正式發(fā)布
    唐河县| 白沙| 桦川县| 明溪县| 朔州市| 锡林浩特市| 祥云县| 定安县| 郑州市| 盘锦市| 民勤县| 原阳县| 柏乡县| 凌云县| 阳高县| 西畴县| 五常市| 色达县| 大洼县| 贵定县| 台安县| 来凤县| 玉田县| 新密市| 乌苏市| 虎林市| 普宁市| 玛纳斯县| 平邑县| 山丹县| 奉贤区| 钟祥市| 焉耆| 白山市| 鹿邑县| 曲松县| 鸡泽县| 苏尼特左旗| 双峰县| 盐津县| 吴堡县|