91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 服務器 > 
  • Linux內核設備驅動之Linux內核模塊加載機制的示例分析

Linux內核設備驅動之Linux內核模塊加載機制的示例分析

發布時間:2021-07-14 11:49:39 來源:億速云 閱讀:214 作者:小新 欄目:服務器

小編給大家分享一下Linux內核設備驅動之Linux內核模塊加載機制的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

#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 查看當前系統的符號表

以上是“Linux內核設備驅動之Linux內核模塊加載機制的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

佛冈县| 寿阳县| 盘锦市| 大连市| 都匀市| 浦县| 余姚市| 兰西县| 浦江县| 亚东县| 陆河县| 呼图壁县| 鹤壁市| 靖州| 青龙| 张家口市| 文昌市| 镇巴县| 隆子县| 桑日县| 佛教| 洛南县| 姚安县| 安龙县| 江北区| 大埔县| 上栗县| 南城县| 怀柔区| 浪卡子县| 信宜市| 大安市| 郴州市| 江源县| 六枝特区| 扬州市| 乌兰县| 正安县| 洮南市| 新津县| 章丘市|