- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统实验报告题目:实验5系统调用学院:教师:姓名:学号:班级:1 ?实验目的学习如何产生一个系统调用,以及怎样通过往内核中增加一个新函数,从而在内核空间中实现对用户空间的读/写。学习重建内核。2实验内容设计并实现一个新的系统调用pedagogictime0,该函数通过使用一个引用参数的调用返回当前的系统时间。编写一个用户空间程序来测试pedagogictime()。实验环境系统版本:Ubuntu 14. 04 LTS内核版本:Linux 3. 2. 0. 29-generic欲编译内核:IJnux-2. 6. 32. 60实验步骤(过程)Stepl:解压内核:内核文件在文件目录Documents下,将压缩包解压到/usr/src/目录下。oslinux@oslinux-virtual-machine:~$ cd Documents//进入Documents目录下(2)o s1i nux@o s1i nux-v i r tual-machine:~/Documents$sudo cp linux-2. 6. 32. 60. tar. bz2 /usr/src/〃将压缩包拷贝到/usr/src/目录下oslinux@oslinux-virtual-machinc :~/Documcnts$cd /usr/src///进入/usr/src/ 目录下(4 )oslinux@oslinux-virtual-machine:/usr/src$ sudo tar -jxvf1 inux-2. 6. 32. 60. tar. bz2//解压压缩包Step2:添加系统调用:编写系统调用服务例程编写加到内核中的源程序,即将要加到一个内核文件中去的一个函数,该函数的名称应该是新的系统调用名称前面加上sy.s_标志。在/usr/src/1 inux-2. 6. 32. 60/kernel/sys. c 文件屮添加源代码。//用编辑器打开sys. c文件添加系统调用pedagogictime的代码oslinux@oslinux-virtual-machinesudo gedit /usr/src/1inux-2. 6. 32. 60/kerne1/sys.c //添加到sys. c的最后一行,代码如下:asmlinkage long svspedagogictime(struct timeval *tv){ ~if (1 ikely (tv)) {struct timeval ktv;do gcttimcofday(ktv);if(copy to user(tv, ktv, sizeof (ktv)))return -EFAULT;}return 0;}添加系统调用号为了从已有的内核程序中增加到新的函数的连接,需要编辑两个文件:4/usr/src/l inux-2?6. 32. 60/arch/x86/include/asm/unistd_32. h 中增加新的系统调用号同时还要将宏变量NR_syscalls的值加1 ;oslinux@oslinux-vi rtual-machine:~$sudo gedit /usr/src/1inux-2. 6.32.60/arch/x86/include/asm/unistd_32. h添加下列代码至文件中再define _NR_perf_event_open #deftne ―NR_pedagogtcttme^define NR_syscalls 338修改系统调用表在/usr/src/1inux-2? 6. 32. 60/arch/x86/kernel/syscall_table_32? S 中增加新的内核函数的指针。——oslinux@oslinux-virtual-machine:?$sudo gedit /usr/src/1inux~2. 6. 32.60/arch/x86/kernel/syscall_table_32. S? long sys_rt_tgsigqueuei.nfo /* 335 */ ?long sys_perf_event_open?long sys_pedagogtcttme /*337*/重新编译Linux内核在当前工作目录(/usi7src/linux-2. 6. 32. 60)进入超级用户,才可以重建内核。oslinux@oslinux-virtual-machine:~$ cd /usr/src/1inux-2. 6.32. 60os1inux@oslinux-virtual-machinc:/usr/src/1inux-2. 6. 32. 60$ sudo - sStpe3:开始编译内核:编译内核的基本过程:root@oslinux-virtual-machinc:
原创力文档


文档评论(0)