模块编译的可选项


1、模块的声明

主要是通过一些宏,来增加模块的附加功能或者可读性

1.1MODULE_LICENSE(“遵守的协议”)

申明该模块遵守的许可证协议,如:”GPL”、”GPL V2”等

1.2MODULE_AUTHOR(“作者”)

申明模块的作者

1.3MODULE_VERSION(“V1.0”)

申明模块的版本

 

2、模块的参数

在应用程序中

Int main(int argc,char **argv)

argc 表示命令行输入的参数的个数,argv中保存输入的参数

 

内核模块中也可以通过命令行输入参数。

参数怎么传入,传入后保存在哪里?

通过宏module_param指定保存模块参数的变量。模块参数用于在加载模块时传递参数给模块。

module_param(name,type,perm)

name:变量的名称

type:变量类型,bool:布尔型 int:整型 charp:字符串型

perm是访问权限。S_IRUGO:读权限 S_IWUSR:写权限

例:

int a=3;

char *st;

module_param(a,int,S_IRUGO);

module_param(a,int,S_IRUGO);

 

 

a赋初值为3,而传入值为10,结果a输出为10.

 

3、符号导出

什么是符号导出,为什么要符号导出呢?

当我们在一个模块add.ko中创建了一个函数:比如add(int a,int b)

然后,我在另一个模块alph.ko中想要调用add()这个函数。

这时我们就需要在add模块中使用符号导出。

EXPROT_SYMBOL(add);

而且在alph模块中要声明

extern add(int a,int b);

猜你喜欢

转载自blog.csdn.net/meibenxiang/article/details/51180793