type
Post
status
Published
date
Jul 12, 2023
slug
2023/07/12/Add-whoami-and-iam-system-calls-in-linux-0.11
summary
在 Linux 0.11 中添加了两个系统调用:
iam()
用于保存用户名,whoami()
用于获取保存的用户名。实验要求编写测试程序并完成实验报告,评分标准包括系统调用的成功调用和报告质量。tags
Linux
开发
category
Linux
created days
new update day
icon
password
Created_time
Jul 12, 2023 02:24 AM
Last edited time
Mar 1, 2025 01:50 AM
0 实验要求
0.1 实验内容
此次实验的基本内容是:在 Linux 0.11 上添加两个系统调用,并编写两个简单的应用程序测试它们。
(1)iam()
第一个系统调用是 iam(),其原型为:
int iam(const char * name);
完成的功能是将字符串参数
name
的内容拷贝到内核中保存下来。要求 name
的长度不能超过 23 个字符。返回值是拷贝的字符数。如果 name
的字符个数超过了 23,则返回 “-1”,并置 errno 为 EINVAL。在
kernal/who.c
中实现此系统调用。(2)whoami()
第二个系统调用是 whoami(),其原型为:
int whoami(char* name, unsigned int size);
它将内核中由
iam()
保存的名字拷贝到 name 指向的用户地址空间中,同时确保不会对 name
越界访存(name
的大小由 size
说明)。返回值是拷贝的字符数。如果 size
小于需要的空间,则返回“-1”,并置 errno 为 EINVAL。也是在
kernal/who.c
中实现。(3)测试程序
运行添加过新系统调用的 Linux 0.11,在其环境下编写两个测试程序 iam.c 和 whoami.c。最终的运行结果是:
$ ./iam lizhijun $ ./whoami lizhijun
0.2 实验报告
在实验报告中回答如下问题:
- 从 Linux 0.11 现在的机制看,它的系统调用最多能传递几个参数?你能想出办法来扩大这个限制吗?
- 用文字简要描述向 Linux 0.11 添加一个系统调用 foo() 的步骤。
0.3 评分标准
- 将 testlab2.c(在
/home/teacher
目录下) 在修改过的 Linux 0.11 上编译运行,显示的结果即内核程序的得分。满分 50%
- 只要至少一个新增的系统调用被成功调用,并且能和用户空间交换参数,可得满分
- 将脚本 testlab2.sh(在
/home/teacher
目录下) 在修改过的 Linux 0.11 上运行,显示的结果即应用程序的得分。满分 30%
- 实验报告,20%
0.4 实验提示
- 将 testlab2.c(在
/home/teacher
目录下) 在修改过的 Linux 0.11 上编译运行,显示的结果即内核程序的得分。满分 50%
- 只要至少一个新增的系统调用被成功调用,并且能和用户空间交换参数,可得满分
- 将脚本 testlab2.sh(在
/home/teacher
目录下) 在修改过的 Linux 0.11 上运行,显示的结果即应用程序的得分。满分 30%
- 实验报告,20%
2 开始实验
2.1 注册系统调用
- include/unistd.h

- kernel/system_call.s

- include/linux/sys.h


- kernel/who.c
- kernel/Makefile


### Dependencies: who.s who.o: who.c ../include/linux/kernel.h ../include/unistd.h exit.s exit.o: exit.c ../include/errno.h ../include/signal.h \ ../include/sys/types.h ../include/sys/wait.h ../include/linux/sched.h \ ../include/linux/head.h ../include/linux/fs.h ../include/linux/mm.h \ ../include/linux/kernel.h ../include/linux/tty.h ../include/termios.h \ ../include/asm/segment.h




欢迎加入“喵星计算机技术研究院”,原创技术文章第一时间推送。

- 作者:tangcuyu
- 链接:https://expoli.tech/articles/2023/07/12/Add-whoami-and-iam-system-calls-in-linux-0.11
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章