linux内核主要由以下几个部分组成
1.模块加载函数
模块加载时,模块的加载函数会自动被内核执行,完成本模块的相关初始化工作
例:static int __init init_function(void){
//初始化代码
}
module_init(init_function);2.模块卸载函数
模块卸载时,模块的卸载函数会自动被内核执行,完成与模块加载函数相反的功能
例:static int __exit exit_function(void){
//释放代码
}
module_exit(exit_function);
3.模块许可证声明
模块许可证声明描述内核模块的许可权限,如果不声明许可证,模块被加载时,将受到被污染的警告
例:MODULE_LICENSE("Dual BSD/GPL");
4.模块参数
模块参数是模块被加载的时候可以被传递给它的值,它本身对应模块的全局变量
例:module_param(参数名,参数类型,参数读写权限);
5.模块导出符号
内核模块可以导出符号,这样其他模块可以使用本模块中的变量或者函数
例:EXPORT_SYMBOL(符号名);
6.模块作者等信息声明
例:MODULE_AUTHOR(作者);
MODULE_DESCRIPTION(描述);
MODULE_VERSION(版本);
MODULE_DEVICE_TABLE(设备表);
MODULE_ALIAS(别名);