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越出了程序可访问的地址空间.
最新文章
- Uiautomator 2.0之Until类学习小记
- OpenStack 通用设计思路 - 每天5分钟玩转 OpenStack(25)
- HAOI2012音量调节
- c# 解析JSON的几种办法(转载)
- 【翻译】口袋妖怪X/Y 制作技法
- 【转】深入PHP FTP类的详解
- 视频流服务器配置[windows平台][转]
- android中的一些问题
- C++编译期判断是否能够转型
- Nginx学习——http配置项解析编程
- java基础概略总结
- 在spring boot环境中使用fastjson + redis的高速缓存技术
- gitlab服务器搭建教程
- javascript单例模式及开发实践
- Linux内核线程
- JS中的同步和异步
- 【JavaScript】--- ES6/ES7/ES8
- wordpress如何屏蔽wp-json(禁用REST API)
- 使用laravel搭建CURD后台页面
- Python之开发自动化管理工具paramiko
热门文章
- spark 笔记 1: 如何着手
- IMDB Classification on Keras
- python - 函数any() 和 all() 的区别
- MongoDB简单查询语句<;平时使用语录,持续更新>;
- Kettle使用教程之Job使用
- 阶段3 2.Spring_02.程序间耦合_5 编写工厂类和配置文件
- svn导出项目到myeclipse,运行报ClassNotFoundException
- 通过NGINX location实现一个域名访问多个项目
- python_面试题_DB相关问题
- 深入理解java:4.3. 框架编程之MyBatis原理深入解析