博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux模块编程系列之二 熟悉特定的…
阅读量:4051 次
发布时间:2019-05-25

本文共 1492 字,大约阅读时间需要 4 分钟。

这些宏定义在<linux/module.h>

MODULE_AUTHOR(name)

定义驱动的编程者,namestring

MODULE_LICENSE(license)

定义驱动的license,一般为GPL,或相关公司的license

MODULE_DESCRIPTION(desc)

对驱动程序的描述,string

MODULE_SUPPORTED_DEVICE(name)

驱动程序所支持的设备,string

MODULE_PARM(var,type)

提供在运行时通过控制台将参数传递给模块 (insmod)

如果我们想用这个宏来传递命令行参数,那么在我们的模块中定义一个全局变量.insmod模块时,便可以用参数的形式,将具体的实参传递给模块中的那个全局变量.
MODULE_PARM(name,type)
有两个参数,一个是这个全局变量的名称,另一个是这个全局变量的类型.
而他的类型有一下几种:
b:
比特型
h:
短整型
i:
整型
l:
长整型
s:
字符串型
在传递字符串型的参数时,这个全局变量需要在模块中用Char *来声明!insmod会自动为其分配内存空间.
例如:
int a = 3;
char *st;
MODULE_PARM(a,”i”);
MODULE_PARM(st,”s”);
insmod是我们加这样的参数:
insmode a.o “a = 3″, “st = hello world”
这里最重要的是,MODULE_PARM()也支持我们最常用的数组类型.用短线’-'把两个数字分开,分别表示数组参数中的最小位数和最大位数.例如:
int array[8];
MODULE_PARM(array,”1-8i”);
在命令行我们使用加这样的参数:
insmod a.o “array = 38745,123,4000″

在那和模块编程时,我们往往给这些全局变量以默认值,如果我们才insmod时没有传入参数时,模块会使用这些默认值,而如果我们传入参数时,这些默认值便被覆盖掉.

MODULE_PARM_DESC(var,desc)

对变量的描述

GPL_HEADER()

 

THIS_MODULE

指向全局变量 __this_module struct module)的指针

系统对每个模块维护一个usage counter,以便决定何时可以安全的卸载模块

下面的宏用来对该usage counter操作,usage counter可以通过/proc/modules

文件查看

MOD_INC_USE_COUNT 

MOD_DEC_USE_COUNT

MOD_IN_USE

 

MODULE_DEVICE_TABLE

EXPORT_SYMTAB

预处理宏,当在程序中用EXPORT_SYMBOL等宏时需要定义该宏。例如,可以在Makefile中定义:-DEXPORT_SYMTAB

 

__EXPORT_SYMBOL(sym,str)

EXPORT_SYMBOL(var)

EXPORT_SYMBOL_NOVERS(var)

导出一个符合到内核符号表,导出后,该符合可以供其他模块使用。这个宏有助于编写驱动程序时清楚的划分出层次。可以通过/proc/ksyms文件或ksyms命令查看内核符号表。EXPORT_SYMBOL_NOVERS(var),导出是不带版本信息。在使用该宏时,需定义

EXPORT_SYMBOL_GPL(var)

EXPORT_NO_SYMBOLS

显示指出,该模块不向内核符合表导出符号

SET_MODULE_OWNER 

转载地址:http://wlsci.baihongyu.com/

你可能感兴趣的文章
cas 4.2.7 和 Nginx 整合遇到的问题 登录一会可以一会不可以
查看>>
CAS 单点登出 loginout 解决方案 -- 最靠谱的方案,不是抄的--还是不靠谱大家不要抄了
查看>>
springboot 支持jsp 直接访问jsp办法无需通过controller转发
查看>>
后续框架可以优化的点
查看>>
SpringBoot Logback 配置参数迁移到配置中心 Apollo
查看>>
springboot 自定义webroot的目录
查看>>
springboot springmvc j2ee 做伪静态化 .html 转发到 .jsp
查看>>
我入行以来java框架的几个阶段&论什么是真正的组件开发&项目中部分源码干货分享
查看>>
java-真正面向配置+组件的开发
查看>>
Mybattis Jpa插件简介
查看>>
java编程奇淫技巧之让java帮我们生成java代码后不停服,直接编译为class并且反射为对象直接使用
查看>>
springMVC源码阅读之FORM参数绑定
查看>>
springBoot SpringMVC解决XSS漏洞 -非重写request 支持普通form提交
查看>>
No plugin found for prefix 'install' in the current project解决方案
查看>>
ZUUL2 使用场景
查看>>
Spring AOP + Redis + 注解实现redis 分布式锁
查看>>
elastic-job 和springboot 集成干货
查看>>
php开发微服务注册到eureka中(使用sidecar)
查看>>
mybatis mybatis plus mybatis jpa hibernate spring data jpa比较
查看>>
也许是世界上最简单最灵活的JAVA CRUD开发方法
查看>>