insmod加载模块过程
来源:互联网 发布:bp神经网络算法推导 编辑:程序博客网 时间:2024/06/06 03:53
insmod程序的源码如下:
#include <stdio.h>#include <string.h>#include <fcntl.h>#include <unistd.h>#include <malloc.h>#include <errno.h>#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>extern int init_module(void *, unsigned long, const char *);static void *read_file(const char *filename, ssize_t *_size){int ret, fd;struct stat sb;ssize_t size;void *buffer = NULL;/* open the file */fd = open(filename, O_RDONLY);if (fd < 0)return NULL;/* find out how big it is */if (fstat(fd, &sb) < 0)goto bail;size = sb.st_size;/* allocate memory for it to be read into */buffer = malloc(size);if (!buffer)goto bail;/* slurp it into our buffer */ret = read(fd, buffer, size);if (ret != size)goto bail;/* let the caller know how big it is */*_size = size;bail:close(fd);return buffer;}#define min(x,y) ((x) < (y) ? (x) : (y))int insmod_main(int argc, char **argv){void *file;ssize_t size = 0;char opt[1024];int ret;/* make sure we've got an agrument */if (argc < 2) {fprintf(stderr, "usage: insmod <module.o>\n")return -1;}/* read the file into memory */file = read_file(argv[1], &size);if(!file) {fprintf(stderr, "insmod: can't open '%s'\n", argv[1]);return -1;}/* get the argument of init_module */opts[0] = '\0';if (argc > 2) {int i, len;char *end = opts + sizeof(opts) - 1;char *ptr = opts;for (i = 2; (i < argc) && (ptr < end); i++) {len = min(strlen(argv[i]), end - ptr);memcpy(ptr, argv[i], len);ptr += len;*ptr++ = ' ';}*(ptr - 1) = '\0';}/* pass it to kernel */ret = init_module(file, size, opts);if (ret != 0) {fprintf(stderr,"insmod: init_module '%s' failed (%s)\n",argv[1], strerror(errno));}/* free the buffer */free(file);return ret;}
0 0
- insmod加载模块过程
- insmod 加载模块的过程
- insmod 加载模块的过程
- insmod 加载模块的过程
- 模块加载过程分析:INSMOD DEMODEV.KO
- insmod 加载模块过程、modprobe 与 insmod的区别 、lsmod命令
- insmod加载模块错误分析
- Linux内核模块的加载 insmod
- modprobe,insmod内核模块加载函数
- insmod加载驱动模块传递参数方法
- 模块加载时 insmod “Invalid module format ”问题解决
- 模块加载——modprobe和insmod的区别
- FreeSwitch 模块加载过程
- 【Node】模块加载过程
- 内核模块加载过程
- insmod等模块命令
- insmod过程详解
- insmod过程详解
- 使用AsyncTask实现异步文件下载
- Linux命令之dos2unix
- PHP大小写敏感规则(转自songkexin的博客)
- 程序猿才懂幽默 haha
- 基于for循环的几个常用排序方法
- insmod加载模块过程
- 关于android布局管理器
- 极客标签互动课程系列 - Javascript生成SVG动画素描特效
- Oracle存储过程及参数理解
- jQuery表单验证插件 - 使用方式非常简单,明了
- SOLR 4.6 多核 multicore配置
- 一个合格程序员应该读过的书
- 【iOS开发-47】如何下载iOS 7.1 Simulator 以及iOS 8离线的Documentation这些文件?
- 分布式搜索elasticsearch 环境搭建