红联Linux门户
Linux帮助

操作系统实验好难----系统调用

发布时间:2008-10-03 16:35:06来源:红联作者:Songs
作者:别扭小孩

实验内容
此次实验的基本内容是:在Linux 0.11上添加两个系统调用,并编写两个简单的应用程序测试该系统调用。实验过程分两步。

第一步是在Linux 0.11上增加一个系统调用whoami(),原型如下:

int whoami(void);

该系统调用的功能是将用户的名字(例如:Li Zhijun)打印到屏幕上。用户的名字字符串写在内核源代码中。然后在Linux 0.11下编写一个测试程序whoami,它调用whoami()获得自己的名字,并在标准输出设备(通常就是屏幕上)打印字符串“I am XXX.”。返回值是任意非负数。

第二步在Linux 0.11上再添加一个系统调用iam(),其接口是:

int iam(const char * name);

完成的功能是将用户程序中传入的字符串参数name的内容拷贝到核心态数据段中。要求name的长度不能超过20个字符。可以假设在核心态数据段中有一个全局变量:char myname[21],iam将用户态数据name拷贝到核心态数据myname中。返回值是拷贝的字符数。如果name的字符个数超出了myname的存储能力,则返回“-EINVAL”。

然后修改的上面的whoami(),新的原型为:

int whoami(char* name, unsigned int size);

它不再向屏幕输出任何内容,而是拷贝myname到name中,同时确保不会对name越界访存(name的大小由size说明)。返回值是拷贝的字符数。如果size小于需要的空间,则返回“-EINVAL”。

然后再实现一个测试程序iam。最终要求的结果是:

$ iam lizhijun
$ whoami
I am lizhijun
文章评论

共有 0 条评论