若运行在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");


Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐