Linux内核模块编程入门-4(Licensing和Module Documentation)
若运行在2.4内核或后面的版本,当加载所有权模块时,或注意到有如下的内容:在内核2.4或后面的版本,使用的机制是在GPL许可证下识别代码,以警告相关人员该代码是非开源的。这是通过MODULE_LICENSE()宏来完成的,通过设置许可证为GPL,这样可以防止打印警告信息,定义在linux/module.h。相似的,MODULE_DESCRIPTION()用于描述模块是干什么
·
若运行在2.4内核或后面的版本,当加载所有权模块时,或注意到有如下的内容:
在内核2.4或后面的版本,使用的机制是在GPL许可证下识别代码,以警告相关人员该代码是非开源的。这是通过MODULE_LICENSE()宏来完成的,通过设置许可证为GPL,这样可以防止打印警告信息,定义在linux/module.h。
相似的,MODULE_DESCRIPTION()用于描述模块是干什么的,
MODULE_AUTHOR()声明模块的作者
MODULE_SUPPORTED_DEVICE()声明了模块支持的设备类型。
这些宏所有定义在linux/module.h中,且内核自身不能使用。
下例展示了各个宏的用法:
/*
* hello-4.c - Demonstrates module documentation.
*/
#include <linux/module.h> // Needed by all modules
#include <linux/kernel.h> // Needed for KERN_INFO
#include <linux/init.h> // Needed for the macros
#define DRIVER_AUTHOR "Fantasy<@gmail.com>"
#define DRIVER_DESC "A simple driver"
static int hello_4_data __initdata = 4;
static int __init hello_4_init(void)
{
printk(KERN_INFO "Hello, World %d\n", hello_4_data);
return 0;
}
static void __exit hello_4_exit(void)
{
printk(KERN_INFO "Goodbye, world 4\n");
}
module_init(hello_4_init);
module_exit(hello_4_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR(DRIVER_AUTHOR);
MODULE_DESCRIPTION(DRIVER_DESC);
MODULE_SUPPORTED_DEVICE("testdevice");
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献2条内容
所有评论(0)