kernel_read【转】】的更多相关文章

转自:http://blog.csdn.net/echoisland/article/details/7101097http://lxr.oss.org.cn/source/fs/exec.c 798 int kernel_read(struct file *file, loff_t offset, 799 char *addr, unsigned long count) 800 { 801 mm_segment_t old_fs; 802 loff_t pos = offset; 803 in…
前些日子接了个外包的活,了解了一下Linux安全模块,发现了安全模块中的一些问题. 关于linux安全模块LSM在此就不多说了,大家google下就明白了. 这里主要介绍的是如何修改这个模块,使它可链栈化. 关于LSM,旧版本的提供了register_security/mod_reg_security接口用于注册用户的安全模块,register_security注册接口只支持一个的安全模块存在,mod_reg_security 支持注册多个安全模块,不过模块之间的调用需要用户自己维护(也就是不提…
LINUX内核分析第七周学习总结:可执行程序的装载 韩玉琪 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 内容提要 一.得到一个可执行程序 1. 预处理.编译.链接 gcc hello.c -o hello.exe gcc编译源代码生成最终可执行的二进制程序,GCC后台隐含执行了四个阶段步骤. 预处理 => 编译 => 汇编 => 链接 预处理:编译器将C源代…
exec 本节我们分析exec系统调用的执行过程. exec一般和fork调用,常规用法是fork出一个子进程,然后在子进程中执行exec,替换为新的代码. do_exec 跟上次的fork类似,这里我们查看do_exec函数. int do_execve(struct filename *filename, const char __user *const __user *__argv, const char __user *const __user *__envp) { return do_…
转自:http://blog.csdn.net/u011279649/article/details/18795547 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 应用层怎样使用fork and execve fork的返回值怎样区分0pid fork系统调用的入口参数来自哪里 how to implement do_fork copy_process How to check the kernel stack correctivity How to set the…
一.ELF文件格式 ELF(Executable and Linking Format)是x86 Linux系统下常用的目标文件格式,有三种主要类型: 适于连接的可重定位文件,可与其他目标文件一起创建可执行文件和共享目标文件. 适于执行的可执行文件,用于提供程序的进程映像,加载的内存执行. 共享目标文件,连接器可将它与其他可重定位文件和共享目标文件连接成其他目标文件. 文件格式 ELF header在文件开始处描述了整个文件的组织,Section提供了目标文件的各项信息,Program head…
一个:载入中wifi驱动模块 在hardware/libhardware_legacy/wifi/wifi.c调用函数 insmod(DRIVER_MODULE_PATH, DRIVER_MODULE_ARG) 当中 DRIVER_MODULE_PATH = /system/lib/dhd.ko DRIVER_MODULE_ARG  = "firmware_path=/etc/wifi/40181/fw_bcm40181a2.bin nvram_path=/etc/wifi/40181/nvra…
Linux操作系统中当CPU处于内核状态时,可以分为有用户上下文的状态和执行硬件.软件中断两种.其中当处于有用户上下文时,由于内核态和用户态的内 存映射机制不同,不可直接将本地变量传给用户态的内存区:处于硬件.软件中断时,无法直接向用户内存区传递数据,代码执行不可中断.针对传统的进程间通信 机制,他们均无法直接在内核态和用户态之间使用,原因如下表:  通信方法 无法介于内核态与用户态的原因 管道(不包括命名管道) 局限于父子进程间的通信. 消息队列 在硬.软中断中无法无阻塞地接收数据. 信号量…
可执行文件加载执行过程: 上一节我们说到ELF文件格式,静态库的符号解析和重定位的内容.这一节我们来分析一下可执行文件. 由上一节我们知道可执行文件也是ELF文件,当程序被加载器加载到内存时是按照ELF格式去解析,然后把可执行文件的不同节加载到虚拟地址空间中.我们看一下32位下的进程虚拟地址模型: 可执行文件的信息被加载到了虚拟地址空间.根据ELF信息找到程序的入口地址就可以执行进程了.我们看一下linux 3.2 内核代码 fs/exec.c中调用可执行文件的大致过程. static int…
加载和动态链接 从编译/链接和运行的角度看,应用程序和库程序的连接有两种方式. 一种是固定的.静态的连接,就是把需要用到的库函数的目标代码(二进制)代码从程序库中抽取出来,链接进应用软件的目标映像中: 另一种是动态链接,是指库函数的代码并不进入应用软件的目标映像,应用软件在编译/链接阶段并不完成跟库函数的链接,而是把函数库的映像也交给用户,到启动应用软件目标映像运行时才把程序库的映像也装入用户空间(并加以定位),再完成应用软件与库函数的连接. 这样,就有了两种不同的ELF格式映像. 一种是静态链…