linux内核模块的一般形式(二)

本文解析了Linux模块中__initmodule_init和__exitmodule_exit的用法,介绍了它们如何动态分配和释放内存,以及在模块加载和卸载过程中的作用。还探讨了不同模块许可协议如GPL及其应用。
摘要由CSDN通过智能技术生成
/*module.c*/
#include<linux/init.h>
#include<linux/kernel.h>
#include<linux/module.h>
static int	__init module_init(void)//注意是两个下划线
{
	printk("module_init\n");
	return 0;
}
static int __exit module_exit(void)//注意是两个下划线
{
	printk("module_exit\n");
	return;
}
module_init(module_init);
module_exit(module_exit);
MODULE_LICENSE("GPL");//模块许可---GPL
MODULE_AUTHOR("HPX");//模块作者--HPX
MODULE_DESCIPTION("A SIMPE MODULE");//模块描述---一个简单模块
MOUDLE_ALIAS("virtual-serial");//模块别名---虚拟串行接口

许可证协议有:GPL,GPL v2,GPL and additional rights,Dual BSD/GPL,Dual MIT/GPL,Dual MPL/GPL等。
模块初始化函数moudle_init会且仅只会被调用一次,在调用完成后不应该再次调用,所以该函数所占的内存应该被释放掉,在函数名前面加__init可以达到这个目的,__init是把标记的函数放到FILE文件特定代码段,在模块加载这段时间将会分单独分配内存,这些函数调用成功后,模块加载程序会释放这部分空间。__exit用于修饰清除函数,和__init的作用类似,但是用于模块的卸载,如果模块不允许卸载,那么这段代码完全就不用加载。
简单来讲:__init和__exit就是让对应的函数动态开辟空间,动态释放空间,用的时候才开辟空间,不用就不开辟,用完就释放;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值