版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、添加系统调用,BEA Confidential。| 2,实验平台简介,在linux2.4内核Redhat 9.0上进行实验,使用系统包含的源代码添加系统调用(在2.4和2.6内核上添加系统调用的步骤稍有不同,稍后介绍),使用uname -a命令确定当前内核版本是否为:bea confidential。| 3,说明了每个系统调用通过单个入口点多路复用到内核的实验原理。Eax寄存器用于标识必须从c库调用指定(用户空间应用程序中的每个调用)的系统调用。加载系统的c库调用索引和参数后,将调用软件中断(0 X80中断),该中断运行system_call函数(通过中断处理程序),该函数按照eax内容中的标
2、识处理所有系统调用。经过一些简单的测试后,我们使用system_call_table和eax中包含的索引进行了实际的系统调用。从系统调用返回后,syscall_exit最终运行,并调用resume_userspace返回用户空间。然后在c库中继续运行,返回到自定义应用程序。BEA Confidential。| 4,实验原理简介,图1。使用中断方法调用系统的简化进程,BEA Confidential。| 5,介绍实验原理,系统调用接口的核心是系统调用多路复用表。该表使用eax中提供的索引确定要从该表调用的系统调用(sys_call_table),如左图所示,系统调用多路复用部分系统调用由内核进一
3、步多路复用。例如,Berkeley软件分发(BSD)套接字调用(socket、bind、connect等)与单独的系统调用索引(_NR_socketcall)相关联请参见/linux/net/socket.c中的sys_socketcall函数。图2。系统调用表和各种链接,BEA Confidential。| 6,实验原理简介-用户空间的读写,Linux内核提供了一些可用于将系统调用参数移动或减去用户空间的函数。方法包含几个基本类型的简单函数(如get_user或put_user)。要移动数据片段(如结构或数组),可以使用一组附加的copy_from_user和copy_to_user函数。您
4、可以使用特殊呼叫(例如Strncpy_from_user和strlen_from_user),移动以null结尾的字串。调用Access_ok测试用户空间指针是否有效。这些函数都在Linux/include/ASM/ucaccess.h中定义。BEA Confidential。| 7,实验原理简介-要在内核和用户空间中移动一些简单类型(例如int或long类型)以读取和写入用户空间,可以使用get_user和put_user轻松实现。两个宏都包含一个值和指向变量的指针。Get_user函数将用户空间地址(ptr)中指定的值移动到指定的内核变量(var)。Put_user函数将内核变量(var)
5、指定的值移动到用户空间地址(ptr)。如果成功,则两个函数均返回0: int get _ user (var,ptr)。Int put_user(var,ptr);在第二个系统调用中使用put_user函数将数据写入一个用户内存。BEA Confidential。| 8,实验原理简介-内核上的输出(printk),函数在内核上运行时,只能使用内核空间中的资源,不能使用用户类型的资源。例如,c库。因此,在输入信息时使用printk printk是printf的简化版本,不能输出复杂的数据类型,如运算符点。与printf不同,printk根据相关记录级别或优先级对邮件进行严格分类。,使用prink
6、函数查找/var/log/messages、BEA Confidential。| 9,添加Linux系统调用,BEA Confidential。| 10,添加新函数,在linux/kernel/sys.c中,在内核中添加三个系统调用函数,命名和功能如下:根据: myca1输入(1,2,3),我们组的3-hang编号mycsa2返回当前时钟滴答数字jiffies,用户指针myc sa2BEA Confidential。| 11,添加新函数,定义myca1函数,BEA Confidential。| 12,添加新函数,myca2,myca3函数定义,BEA Confidential。| 13,添加L
7、inux系统调用,BEA Confidential。| 14,更新头文件,在Linux/include/ASM-i386/unistd . h中,添加三个系统调用函数编号,如下图所示。BEA Confidential。| 15,添加Linux系统调用,BEA Confidential。| 16,系统调用表更新,linux/arch/i386/kernel/entry。s的syscall_table,如下图所示,添加三个系统调用表条目。BEA Confidential。| 17,添加Linux系统调用,BEA Confidential。| 18,内核编译,内核编译前如果使用VMWare,请记住快
8、照,以防止将来内核编译失败。您可以返回到修改代码的状态。注释掉/etc/modules.conf中的scsi_hostAdapter BusLogic行,以防止将来的编译错误。CD/usr/src/Linux;从Makefile的版本号中删除custom以避免内核版本冲突,BEA Confidential .| 19,内核编译,make mrproper/*清除上次编译内核的文件*/make xconfig;必需的配置选项包括: SCSI设备支持-SCSI低级别驱动程序-buslogic SCSI支持fusion mpt设备支持-基本SCSI主机| 20,编译的内核,make depMake
9、bzImageMake modulesMake modules _ installMake insall之后,系统中安装了新内核,您只需重新启动系统即可。BEA Confidential。| 21,添加Linux系统调用,BEA Confidential。| 22,运行测试程序(1),编辑源代码:BEA Confidential。| 23,运行测试程序(1),运行结果为:BEA Confidential。| 24,运行测试程序(2),编辑源代码:BEA Confidential,如下所示:| 25,运行测试程序(2),运行结果为:BEA Confidential。| 26,运行测试程序(3),
10、编辑源代码:BEA Confidential,如下所示:| 27,运行测试程序(3),运行结果为:bea confidential。| 28,调用Linux 2.6内核附加系统,内核空间:1。在/usr/src/kernel/Linux-2 . 6 . 18/include/Linux/syscalls . h结尾添加两行,以使系统返回asmlinkage long sys_cqtest1asmlinkage long sys _ CQ test 2(void);2./usr/src/kernel/Linux-2 . 6 . 18/kernel/sys . c添加相应的系统调用函数3。将系统调用号添加到/usr/src/kerne
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 云培训心得体会总结5篇
- 浙江省建设工程质量检测专项及检测能力表
- 年八年级地理生物会考综合模拟试卷含答案详解评分标准与学生作答区
- 2026北京人行面试题目及答案
- 2026北卫面试题目及答案
- 2026编制保安面试题及答案大全
- 2026滨海幼儿园面试题及答案
- 2026滨水景观面试题及答案大全
- 2026不常见的面试题及答案
- 2026年西安市临潼区人民法院就业见习招募模拟试卷及参考答案详解(典型题)
- 肺结核病例诊疗记录模板
- 外阴硬化性苔藓
- DGTJ08-2240-2017 道路注浆加固技术规程
- 生猪急宰管理办法
- DB11∕T 2387-2024 城市轨道交通工程盾构机吊装技术规程
- 药品技术转移管理制度
- 2021版220kV厂站二次接线标准图纸集
- 夏令营教官业务培训
- T-CROPSSC 009-2023 茎尖菜用甘薯生产技术规程
- 2023学年度高一下学期班主任工作总结
- 绿化苗木主材采购(供货计划、售后服务承诺)
评论
0/150
提交评论