真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Linux內(nèi)核設(shè)備驅(qū)動(dòng)之Linux內(nèi)核模塊加載機(jī)制的示例分析

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

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到偃師網(wǎng)站設(shè)計(jì)與偃師網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、空間域名、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋偃師地區(qū)。

#include

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中的指令來(lái)實(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)核的符號(hào)表中

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

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

以上是“Linux內(nèi)核設(shè)備驅(qū)動(dòng)之Linux內(nèi)核模塊加載機(jī)制的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


網(wǎng)站題目:Linux內(nèi)核設(shè)備驅(qū)動(dòng)之Linux內(nèi)核模塊加載機(jī)制的示例分析
文章位置:http://weahome.cn/article/pjpioh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部