Manpages

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越 出 了 程 序 可 访 问 的 地 址 空 间 .

"雷 勇 " <nsinit [AT] 263.net>

本 页 面 中 文 版 由 中 文 man 手 册 页 计 划 提 供 。 中 文 man 手 册 页 计 划 : https://github.com/man-pages-zh/manpages-zh