init_module 中文man页面

系统
init_module加载已被重定位的模块映象到内核空间,并运行模块的初始化函数. 模块映象以module结构开始,紧跟着代码和数据,

NAME

init_module - 初始化一条可加载模块的记录.  

总览

#include <linux/module.h>

int init_module(const char *name, struct module *image);  

描述

init_module加载已被重定位的模块映象到内核空间,并运行模块的初始化函数. 模块映象以module结构开始,紧跟着代码和数据,module定义如下:
       struct module                                              
       {
         unsigned long size_of_struct; /* module结构的大小 */
         struct module *next; /*指向下一个module结构 */
         const char *name; /* 模块名字 */
         unsigned long size;
         long usecount; /* 使用计数 */
         unsigned long flags; /* 模块当前状态标志 */
         unsigned int nsyms;
         unsigned int ndeps; /* 正使用模块的模块个数 */
         struct module_symbol *syms;
         struct module_ref *deps;
         struct module_ref *refs;
         int (*init)(void); /* 模块的初始化函数指针 */
         void (*cleanup)(void); /*模块的清除函数指针 */
         const struct exception_table_entry *ex_table_start;
         const struct exception_table_entry *ex_table_end;
       #ifdef __alpha__
         unsigned long gp;
       #endif
       }; 除了next和refs外,所有的指针被期望指在模块体内, 该系统调用只对超级用户开放.  

返回值

成功时返回0,错误时返回 -1,errno被相应设置.  

错误

EPERM

    用户不是超级用户.
ENOENT

    name指定的模块不存在.
EINVAL
EBUSY

    模块的初始化函数失败.
EFAULT

    name或image越出了程序可访问的地址空间.

#p#

NAME

init_module - initialize a loadable module entry  

SYNOPSIS

#include <linux/module.h>

int init_module(const char *name, struct module *image);

DESCRIPTION

init_module loads the relocated module image into kernel space and runs the module's init function.

The module image begins with a module structure and is followed by code and data as appropriate. The module structure is defined as follows:

struct module
{
  unsigned long size_of_struct;
  struct module *next;
  const char *name;
  unsigned long size;
  long usecount;
  unsigned long flags;
  unsigned int nsyms;
  unsigned int ndeps;
  struct module_symbol *syms;
  struct module_ref *deps;
  struct module_ref *refs;
  int (*init)(void);
  void (*cleanup)(void);
  const struct exception_table_entry *ex_table_start;
  const struct exception_table_entry *ex_table_end;
#ifdef __alpha__
  unsigned long gp;
#endif
};

All of the pointer fields, with the exception of next and refs, are expected to point within the module body and be initialized as appropriate for kernel space, i.e. relocated with the rest of the module.

This system call is only open to the superuser.  

RETURN VALUE

On success, zero is returned. On error, -1 is returned and errno is set appropriately.  

ERRORS

EPERM
The user is not the superuser.
ENOENT
No module by that name exists.
EINVAL
Some image slot filled in incorrectly, image->name does not correspond to the original module name, some image->deps entry does not correspond to a loaded module, or some other similar inconsistency.
EBUSY
The module's initialization routine failed.
EFAULT
name or image is outside the program's accessible address space.

SEE ALSO

create_module(2), delete_module(2), query_module(2).

责任编辑:韩亚珊 来源: CMPP.net
相关推荐

2011-08-23 11:31:31

init中文man

2011-08-25 14:22:52

query_modul中文man

2011-08-25 14:07:55

create_modu中文man

2011-08-24 16:48:36

man中文man

2011-08-15 10:21:09

man中文man

2011-08-11 16:11:49

at中文man

2011-08-25 10:21:56

man.conf中文man

2011-08-25 15:39:42

fcloseall中文man

2011-08-25 15:00:15

cfgetispeed中文man

2011-08-19 18:35:50

issue中文man

2011-08-25 17:03:51

pclose中文man

2011-08-25 17:40:25

setvbuf中文man

2011-08-23 14:21:16

poweroff中文man

2011-08-24 15:52:59

intro中文man

2011-08-23 13:40:31

2011-08-25 15:54:08

ferror中文man

2011-08-25 14:40:27

basename中文man

2011-08-25 17:24:54

puts中文man

2011-08-25 18:34:55

ungetc中文man

2011-08-23 10:03:40

useradd中文man
点赞
收藏

51CTO技术栈公众号