增加可执行文件
在user文件夹中添加文件print-pid.c,同时在Makefile里面添加:

#include "kernel/types.h"
#include "kernel/stat.h"
#include "user/user.h"
int main()
{
printf("My PID is : %d", getpid());
exit(1);
}
然后可以在操作系统中验证:

增加系统调用(我们将以getcpuid为例子)
增加系统调用我个人理解可以分为下面四个步骤,下面我们按照步骤进行解析(PS:这里我们先跳过原理部分):
- 增加系统调用号
- 增加用户态入口
- 修改kernel/syscall.c中的跳转表
- 实现系统调用函数
增加系统调用号
在kernel/syscall.h后面增加定义就好:

增加用户态入口
修改user/user.h
user/user.h中定义了程序在用户态下能使用的所有函数。如同上面的第一个例子,我们使用了getpid,但是其实我们是已经定义在user.h中了。

我们往其中加入getcpuid:
// user/user.h
...
int getcpuid(void);
...
kernel/usys.S定义用户态入口函数
这个的作用就是把系统调用号赋值给a7寄存器,为后面使用syscall()进行分发的时候提供依据。
// kernel/usys.S
...
SYSCALL(getcpuid)
...
这样就完成了用户态入口的定义。


