一个简单的新系统调用FreeBSD-11.0-RELEASE-amd64

时间:2017-02-05 11:44:01

标签: system-calls freebsd

我是FreeBSD的新手。我在VMware上安装了FreeBSD-11.0-RELEASE-amd64。我想添加第一个新的系统调用。我找到了link

我做了:

  

cd / usr / src / sys / kern

     

ee mykern.c

#include <sys/sysproto.h>
#include <sys/proc.h>
#include <sys/types.h>
#include <sys/systm.h>

#ifndef _SYS_SYSPROTO_H_
struct myargs {
    int k;
};
#endif

int func(struct thread *p, struct myargs *uap)
{
printf("Hello");
return (0);
}

我将系统调用添加到了结束/kern/syscalls.master

550      AUE_NULL      STD { int func(int k);}

然后我做了

  

cd / usr / src

     

sudo make -C / sys / kern / sysent

接下来,我将文件添加到/ sys / conf / files

 kern/mykern.c       standard

另外,我将系统调用添加到/kern/capabilities.conf

    ##
    ## Allow associating SHA1 key with user
    ##
    func

最后,在/ usr / src /中运行命令

  

sudo make -j8 kernel

在这一步中我得到:

make don't know how to make kernel. Stop

make stopped in /usr/src

1 个答案:

答案 0 :(得分:1)

检查Makefile中是否存在Makefile.inc1/usr/src。后者实际上是定义buildkernel目标的地方。验证该目标是否确实存在于该文件中。