lab3_系统调用(下)
admin
2024-03-22 17:23:19
0

1. 修改的文件

1.1 添加系统调用 宏定义的 编号

include/unistd.h 中 添加 iam ,whoami 系统调用宏定义的编号,

#define __NR_sgetmask	68
#define __NR_ssetmask	69
#define __NR_setreuid	70
#define __NR_setregid	71
#define __NR_iam 72
#define __NR_whoami 73

1.2 修改 可以系统调用的总数量

kernel/system_call.s

# offsets within sigaction
sa_handler = 0
sa_mask = 4
sa_flags = 8
sa_restorer = 12nr_system_calls = 74

1.3 添加系统调用名

为新增的系统调用 添加 系统调用名 并维护 系统调用表,
include/linux/sys.h

extern int sys_setregid();
extern int sys_iam();
extern int sys_whoami();fn_ptr sys_call_table[] = { sys_setup, sys_exit, sys_fork, sys_read,
sys_write, sys_open, sys_close, sys_waitpid, sys_creat, sys_link,
sys_unlink, sys_execve, sys_chdir, sys_time, sys_mknod, sys_chmod,
sys_chown, sys_break, sys_stat, sys_lseek, sys_getpid, sys_mount,
sys_umount, sys_setuid, sys_getuid, sys_stime, sys_ptrace, sys_alarm,
sys_fstat, sys_pause, sys_utime, sys_stty, sys_gtty, sys_access,
sys_nice, sys_ftime, sys_sync, sys_kill, sys_rename, sys_mkdir,
sys_rmdir, sys_dup, sys_pipe, sys_times, sys_prof, sys_brk, sys_setgid,
sys_getgid, sys_signal, sys_geteuid, sys_getegid, sys_acct, sys_phys,
sys_lock, sys_ioctl, sys_fcntl, sys_mpx, sys_setpgid, sys_ulimit,
sys_uname, sys_umask, sys_chroot, sys_ustat, sys_dup2, sys_getppid,
sys_getpgrp, sys_setsid, sys_sigaction, sys_sgetmask, sys_ssetmask,
sys_setreuid,sys_setregid, sys_iam, sys_whoami };

2. 编写新增的系统调用

为新增的系统调用编写代码实现, 在 linux-0.11/kernel 目录下, 创建一个who.c 的文件;

2.1 系统调用编写

2.2 make

修改 Makefile 文件,
参见这里makefile 文件修改

重新 make
/home/shiyanlou/os/oslab/linux-0.11 的路径下,
重新执行 make clean && make BootImage ,

3. 调用 新增的系统函数

3.1 编写测试文件

3.2 文件传输

以上两个文件需要放到启动后的linux-0.11操作系统上运行,才能验证新增的系统调用是否有效,

  • 那如何才能将这两个文件从宿主机转到稍后虚拟机中启动的linux-0.11操作系统上呢?

这里我们采用挂载方式实现宿主机与虚拟机操作系统的文件共享,

  • 在 oslab 目录下执行以下命令挂载hdc目录到虚拟机操作系统上。
:~/Hit_os-main/hit-oslab-linux-20110823/oslab$ sudo ./mount-hdc

挂载之后, 则虚拟机的操作系统的文件系统 可以显示:

~/Hit_os-main/hit-oslab-linux-20110823/oslab/hdc$ pwd
/home/shiyanlou/Hit_os-main/hit-oslab-linux-20110823/oslab/hdc
shiyanlou@Lenovo-Legion:~/Hit_os-main/hit-oslab-linux-20110823/oslab/hdc$ ls
bin  dev  etc  image  Image  mnt  shoelace  tmp  usr  var

拷贝文件

cp  /home/shiyanlou/Hit_os-main/hit-oslab-linux-20110823/lab3_system_call/iam.c  /home/shiyanlou/Hit_os-main/hit-oslab-linux-20110823/lab3_system_call/whoami.c   hdc/usr/root
~/Hit_os-main/hit-oslab-linux-20110823/oslab/hdc/usr/root$ ls
gcclib140  hello.c  iam.c       linux0.tgz    README  shoelace.tar.Z
hello      hello.o  linux-0.00  mtools.howto  shoe    whoami.c

注意,需要关闭该终端, 才能启动 bochs

3.3 编译运行

启动 bochs 虚拟机, 在该虚拟环境下, 编译并运行这两个测试程序;

3.4 调试分析

相关内容

热门资讯

农旅融合 促乡村振兴 6月25日,游客在正阳县彭桥乡大刘村的月季园里游玩。月季园是大刘村整合低洼地建造而成,每年盛花期都会...
《中餐厅·非洲创业季》今晚10... 三湘都市报通讯员 聂建洋 七个“小苦瓜”的非洲历险记,困难再升级! 第一期被现实狠狠教育了一顿,合伙...
原创 三... 宝子们,三伏天这 “大火炉” 可算来了!走在街上,那热浪扑面而来,感觉自己都快被烤化了。不过呢,这看...
鲜吃养颜,腌渍润喉!入菜一煮嘎... ⚬ 说起吃酸,广西人很有发言权。酸嘢、酸笋、酸粉、ong菜酸、牛肠酸……光听着就流口水。 其中,有一...
2025大众点评“必吃榜”:刷... 6月25日,大众点评2025年“必吃榜”正式揭晓,144座城市及地区的3091家餐厅上榜,新增10座...
酸辣鲜香、开胃又好吃!学会这几... 泡椒肉丝(酸辣过瘾) 食材:里脊肉200g、泡椒10个、泡姜1块、蒜末、香菜 做法: 1. 里脊肉切...
糯叽叽+甜蜜蜜!这一口美味滋味... 被炖的沙糯糯的红豆,配上糯唧唧的小圆子,唇齿香甜软糯间沁着桂花的香气,吃上一口,甜而不腻,满口清香,...
零基础如何自学婚礼手绘 零基础如何自学婚礼手绘我最近也想学习婚礼策划,在网上搜了好多关于这个方面的知识以及书籍,最后找到一个...
功夫熊猫3里面讲了阿宝什么故事... 功夫熊猫3里面讲了阿宝什么故事?阿宝,他是一只身材肥胖、体型硕大的熊猫。阿宝遇到亲生父亲李山后,跟随...
对联迎新年四季平安下联是? 对联迎新年四季平安下联是?上联:度佳节五福临门下联:迎新年四季平安
有关 父母爱 的格言或俗语 有关 父母爱 的格言或俗语我急需!!谁言寸草心,报得三春晖!可怜天下父母心!儿行千里母担忧儿疼娘...
我们这叫缘分吗?天注定? 我们这叫缘分吗?天注定?不说废话了,我认为是!呵呵,缘分二字岂能是我们身在红尘的人能看透的,你能做到...
什么是劳动模范 什么是劳动模范请给推荐几篇劳模事迹材料各行业的先进.
问一首歌的名字 问一首歌的名字《撑腰》——罗志祥
医护人员上门检测见到昔日同学,... 医护人员上门检测见到昔日同学,遇见老同学你是否会感觉格外亲切?医护人员上门检测见到昔日的同学,老同学...
一通书信 一通书信 这两天读《傅雷家书》,前几章是傅聪给家人的回信,每章的标题以“第一 通 ”、“第二 通 ”...
散文关于母亲 散文关于母亲有时自己心里会认为,自己是个冷血的人,周围发生的一切都不会让自己有太多情绪感受........
自然界的物质那么多,为何金刚石... 自然界的物质那么多,为何金刚石被称为是自然界最硬的物质?因为它的元素非常的纯正,所以密不透风,因此超...
英文小故事老人和老猫的动画 英文小故事老人和老猫的动画英文小故事老人和老猫的动画  The Old Man and the Ol...