1、刚工作时做Linux 流控;后来做安全操作系统;再后来做操作系统加固;现在做TCP 加速。唉!没离开过类Unix!!!但是水平有限。。
全部博文(353)
分类: LINUX
2015-06-04 12:30:28
原文地址:THIS MODULE 作者:hanwei_1049
struct module
{
enum module_state state;
/* Member of list of modules */
struct list_head list;
/* Unique handle for this module */
char name[MODULE_NAME_LEN];
state代表模块当前状态,是一个枚举型变量,可取的值为:
enum module_state
{
MODULE_STATE_LIVE, // 模块在正常运行
MODULE_STATE_COMING, // 模块正在被加载
MODULE_STATE_GOING, // 模块正在被卸载
};
load_module函数中完成模块的部分创建工作后,把状态置为MODULE_STATE_COMING。
sys_init_module函数中完成模块的全部初始化工作后(包括把模块加入全局的模块列表,调用模块本 身的初始化函数),把模块状态置为MODULE_STATE_LIVE。
当使用rmmod工具卸载模块时,会调用系统调用delete_module,会把模块的状态置为MODULE_STATE_GOING。
这是模块内部维护的一个状态。
所有的内核模块都通过list成员,被维护在一个全局链表中。链表头是一个全局变量struct module *modules。
任何一个新创建的模块,都会被加入到这个链表的头部,通过modules->next即可引用到。
name是模块的名字,一般会拿模块文件的文件名作为模块名,它是这个模块的一个标识。
宏THIS_MODULE定义如下
#define THIS_MODULE (&__this_module),__this_module是一个struct module变量,代表当前模块,类似current。可以通过THIS_MODULE宏来引用模块的struct module结构。