8.模块支持
模块装入 |
函数名 |
功能 |
函数形成 |
参数 |
描述 |
request_module |
试图装入一个内核模块 |
int request_module (const char * module_name) |
module_name为模块名 |
使用用户态模块装入程序装入一个模块。成功返回0,失败返回一个负数。注意,一个成功的装入并不意味着这个模块在自己出错时就能卸载和退出。调用者必须检查他们所提出的请求是可用的,而不是盲目地调用。 如果自动装入模块的功能被启用,那么这个函数就不起作用。 |
|
call_usermodehelper |
启动一个用户态的应用程序 |
int call_usermodehelper (char * path, char ** argv, char ** envp); |
path为应用程序的路径名,argv为以空字符结束的参数列表,envp为以空字符结束的环境列表。 |
运行用户空间的一个应用程序。该应用程序被异步启动。它作为keventd的子进程来运行,并具有root的全部权能。Keventd在退出时默默地获得子进程。 必须从进程的上下文中调用该函数,成功返回0,失败返回一个负数。 |
|
内部模块支持 |
inter_module_register |
注册一组新的内部模块数据 |
void inter_module_register (const char * im_name, struct module * owner, const void * userdata) |
im_name为确定数据的任意字符串,必须唯一,owner为正在注册数据的模块,通常用THIS_MODULE ,userdata指向要注册的任意用户数据。 |
检查im_name还没有被注册,如果已注册就发出“抱怨”。对新数据,则把它追加到inter_module_entry链表。 |
inter_module_unregister |
注销一组内部模块数据 |
void inter_module_unregister (const char * im_name) |
im_name为确定数据的任意字符串,必须唯一。 |
检查im_name已经注册,如果没有注册就发出“抱怨”。 对现有的数据,则把它从inter_module_entry链表中删除。 |
|
inter_module_get |
从另一模块返回任意的用户数据 |
const void * inter_module_get (const char * im_name) |
im_name为确定数据的任意字符串,必须唯一。 |
如果im_name还没有注册,则返回NULL。增加模块拥有者的引用计数,如果失败则返回NULL,否则返回用户数据。 |
|
inter_module_get_request |
内部模块自动调用request_module |
const void * inter_module_get_request (const char * im_name, const char * modname) |
im__name为确定数据的任意字符串,必须唯一;modname为期望注册m_name的模块。 |
如果inter_module_get失败,调用request_module,然后重试。 |
|
inter_module_put |
释放来自另一个模块的数据 |
void inter_module_put (const char * im_name) |
im__name为确定数据的任意字符串,必须唯一。 |
如果im_name还没有被注册,则“抱怨”,否则减少模块拥有者的引用计数。 |