国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 服務器 > Linux服務器 > 正文

Linux內核設備驅動之Linux內核模塊加載機制筆記整理

2024-09-05 23:05:26
字體:
來源:轉載
供稿:網友

#include <linux/moduleparam.h>

1. 模塊參數

在驅動定義變量

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

module_param的調用關系如下:

#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 } }

多個c文件編成一個模塊,可以使用xxx-objs這個Makefile中的指令來實現,如下:

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

可在/sys/module/模塊名/下查看模塊在系統的信息

1. 查看elf文件的信息

readelf test.ko -a

ko文件組成

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

2. EXPORT_SYMBOL(函數名/變量的地址) //把函數/或者變量的地址導出到內核的符號表中

EXPORT_SYMBOL_GPL(函數名)///////////

/proc/kallsyms 查看當前系統的符號表

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到服務器教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 涞源县| 郯城县| 朝阳市| 金坛市| 江都市| 南靖县| 冷水江市| 黎川县| 茌平县| 望江县| 都江堰市| 寻乌县| 延边| 旌德县| 铁岭县| 天峻县| 林周县| 忻城县| 晴隆县| 五指山市| 抚远县| 阳曲县| 阳山县| 城固县| 淮滨县| 沾益县| 闸北区| 花莲县| 贵南县| 西青区| 工布江达县| 广河县| 秭归县| 蓬溪县| 卫辉市| 恩平市| 余江县| 高唐县| 康定县| 榆树市| 伽师县|