添加两个系统调用
int iam(const char * name); 将name写入内核
int whoami(char* name, unsigned int size); 从内核中读出name
修改内核
先在include/unistd.h 中添加系统调用编号,
#define __NR_whoami 72
#define __NR_iam 73
由于这是内核态定义,为了用户态也能生效,需要修改用户态的头文件。方法是先mount hdc,在hdc下面找到/user/include/unistd.h
在该文件中添加这两个定义。
接下来继续回到linux 代码。在kernel/system_call.s中修改系统调用数目
nr_system_calls = 72
修改成74
接下来修改系统调用表,在include/linux/sys.h中,仿照添加定义,并添加到数组中。
extern int sys_whoami();
extern int sys_iam();
接下来就该实现sys_iam 和sys_whoami。
在kernel中添加who.c
#include <string.h>
#include <errno.h>
#include <asm/segment.h>
char msg[24] = {
0};
int sys_iam(const char *name)
{
int i;
char tmp[30];
for (i = 0; i<30;