濮阳杆衣贸易有限公司

主頁 > 知識庫 > Linux內(nèi)核設(shè)備驅(qū)動(dòng)之Linux內(nèi)核模塊加載機(jī)制筆記整理

Linux內(nèi)核設(shè)備驅(qū)動(dòng)之Linux內(nèi)核模塊加載機(jī)制筆記整理

熱門標(biāo)簽:廈門營銷外呼系統(tǒng)平臺 涪陵商都400電話開通辦理 外呼系統(tǒng)的經(jīng)營范圍 申請400電話價(jià)格多少 安陽ai電銷機(jī)器人軟件 外呼系統(tǒng)不彈窗 智能電話機(jī)器人坐席 云會(huì)外呼系統(tǒng) 柳州市機(jī)器人外呼系統(tǒng)報(bào)價(jià)

#include <linux/moduleparam.h>

1. 模塊參數(shù)

在驅(qū)動(dòng)定義變量

static int num = 0; //當(dāng)加載模塊不指定num的值時(shí)則為0
  • module_param(變量名, 類型, 權(quán)限);類型: byte, int, uint, short, ushort, long, ulong, bool, charp,權(quán)限不能有寫的權(quán)限
  • 傳參數(shù): insmod test.ko 變量名1=值1  變量名2=值2

module_param的調(diào)用關(guān)系如下:

#define module_param(name, type, perm) \

module_param_named(name, name, type, perm)
#define module_param_named(name, value, type, perm)  \

param_check_##type(name, &(value));  \

module_param_call(name, param_set_##type, param_get_##type, &value, perm); \

__MODULE_PARM_TYPE(name, #type)
#define module_param_call(name, set, get, arg, perm)   \

__module_param_call(MODULE_PARAM_PREFIX,   \

  name, set, get, arg,   \

  __same_type(*(arg), bool), perm)
#define __module_param_call(prefix, name, set, get, arg, isbool, perm) \

static int __param_perm_check_##name __attribute__((unused)) = \

BUILD_BUG_ON_ZERO((perm) < 0 || (perm) > 0777 || ((perm) & 2)) \

+ BUILD_BUG_ON_ZERO(sizeof(""prefix) > MAX_PARAM_PREFIX_LEN); \

static const char __param_str_##name[] = prefix #name; \

static struct kernel_param __moduleparam_const __param_##name \

__used \

  __attribute__ ((unused,__section__ ("__param"),aligned(sizeof(void *)))) \

= { __param_str_##name, perm, isbool ? KPARAM_ISBOOL : 0, \

  set, get, { arg } }

多個(gè)c文件編成一個(gè)模塊,可以使用xxx-objs這個(gè)Makefile中的指令來實(shí)現(xiàn),如下:

test-objs := a.o b.o //由a.c, b.c 編成test.ko, 注意不能有.o文件與目標(biāo)ko文件同名
obj-m += test.o

可在/sys/module/模塊名/下查看模塊在系統(tǒng)的信息

1. 查看elf文件的信息

readelf test.ko -a

ko文件組成

  • 1. elf文件頭
  • 2. text data ...
  • 3. sections table
  • 4. symbol table

2. EXPORT_SYMBOL(函數(shù)名/變量的地址) //把函數(shù)/或者變量的地址導(dǎo)出到內(nèi)核的符號表中

EXPORT_SYMBOL_GPL(函數(shù)名)
///////////

/proc/kallsyms 查看當(dāng)前系統(tǒng)的符號表

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

標(biāo)簽:晉城 綏化 巴中 南充 蕪湖 孝感 撫順 福州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Linux內(nèi)核設(shè)備驅(qū)動(dòng)之Linux內(nèi)核模塊加載機(jī)制筆記整理》,本文關(guān)鍵詞  Linux,內(nèi)核,設(shè)備驅(qū)動(dòng),之,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Linux內(nèi)核設(shè)備驅(qū)動(dòng)之Linux內(nèi)核模塊加載機(jī)制筆記整理》相關(guān)的同類信息!
  • 本頁收集關(guān)于Linux內(nèi)核設(shè)備驅(qū)動(dòng)之Linux內(nèi)核模塊加載機(jī)制筆記整理的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    万州区| 措勤县| 洪湖市| 叶城县| 于田县| 河北省| 龙门县| 云霄县| 安多县| 米易县| 峨山| 莱阳市| 武山县| 泸溪县| 遵义市| 探索| 瓦房店市| 民丰县| 南开区| 迁安市| 龙江县| 怀化市| 紫金县| 罗甸县| 嘉祥县| 河南省| 石家庄市| 元氏县| 江达县| 汶上县| 榆树市| 麻江县| 沙坪坝区| 定陶县| 克山县| 鹿邑县| 娄底市| 万荣县| 迁安市| 泽州县| 无极县|