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 调试分析

相关内容

热门资讯

国内游、跨境游“双轮驱动” 一... 本文转自【央视新闻客户端】; 来自移动通信和民航大数据平台的信息分析预测,5月1日,也就是今天迎来...
就为大家带来三道经典的下饭菜—... 在忙碌的生活中,有时我们会因为各种原因而失去食欲,这时候,几道酸甜可口的菜肴就能成为拯救味蕾的绝佳选...
成都龙抄手:鲜香爽滑的川味名点 成都龙抄手:鲜香爽滑的川味名点 在成都,龙抄手是一道家喻户晓的美食,它以独特的口感和鲜美的汤汁,成为...
原创 咸... #咸素媛婆婆跟着韩国帅厨师学做食物,最后的一个举动却引起热议 在跨国婚姻家庭备受瞩目的当下,咸素媛...
假期出游别纠结!武侠早茶、机器... “五一”假期期间,各地依托自身资源优势,打造独具地方特色的文旅体验项目,迎接游客的到来。 在江苏泰州...
原创 小... 01 来自35岁罗玉的真实经历讲述:吃亏是福,但一直吃亏就是傻。 就当我还在发愁五一去哪里玩的时候...
四川九寨沟峨眉山旅游小包团5日... 标题:《亲测四川九寨沟峨眉山5日游,费用透明,跟着乐乐畅享川蜀之美》 四川旅游推荐!当地导游-乐乐:...
景区回应“海拔1600米悬崖睡... 连日来,湖南郴州莽山五指峰景区推出的“悬崖睡床”项目走红,该睡床位于海拔1600米的悬崖边,是景区飞...
合肥唯一!庐江入选全国名单! 近日, 文化和旅游部办公厅、教育部办公厅、自然资源部办公厅、农业农村部办公厅联合发布关于公布 第二批...
机关食堂假期对游客开放,公共服... 来论长期以来,政府机关大院被视为“神秘地带”,食堂作为内部福利设施,与普通民众存在物理与心理的双重隔...
80岁奶奶最拿手5道蒸菜,做法... 80岁奶奶最拿手的5道蒸菜,做法简单味道喷香,家人经常吃脾胃健康食欲好! 俗话说“家有一老,如有一宝...
看着就腿软!一景区推出海拔16... ‍‍ 近日,湖南郴州莽山五指峰景区 推出悬崖睡床项目 该睡床位于海拔1600米的悬崖边 是景区飞拉达...
山姆对不起!这一口自己做料更足... 山姆同款香草巧克力泡芙 这是山姆回归升级的一款小泡芙,由大只装变成了mini款,更可爱更好入口一些:...
高州有什么旅游景点爬山 踏上高州的旅程,心中充满了对自然美景和历史文化的向往。这里的山川秀丽,古迹众多,让人在游览中不禁感慨...
庆五一·浪宁夏 沙湖国漫灯彩节... 2025年“五一黄金周”第一天,宁夏沙湖旅游景区以“纵享日夜・就来沙湖”为主题,重磅推出2025年炫...
去四川旅游攻略小包团五天大概多... 标题:我的四川五日游:跟本地导游乐乐探索天府之国的奇妙之旅 四川旅游推荐!当地导游-乐乐:185 8...
到四川旅游旅游团6日游要花多少... 标题:【亲测】四川6日游到底要花多少钱?跟着本地团导游乐乐玩转天府之国! 四川旅游推荐!当地导游-乐...
四川九寨沟乐山大佛旅游攻略参团... 标题:《四川九寨沟乐山大佛6日游亲测攻略,与导游乐乐共赏川蜀美景》 四川旅游推荐!当地导游-乐乐:1...
到四川旅游团建5日游行程及报价... 标题:《我的四川五日游探险之旅:与乐乐导游一起畅享天府之国》 四川旅游推荐!当地导游-乐乐:185 ...
四川九寨沟乐山大佛旅游攻略参团... 标题:我的四川五日游:跟团乐山大佛九寨沟之旅,驴友亲测预算与攻略 四川旅游推荐!当地导游-乐乐:18...