2017-02-05 32 views
1

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

我所做的:

CD/usr/src目录/ SYS /克恩

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); 
} 

我说我的系统调用来结束/克恩/ syscalls.master

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

然后我做了

CD/usr/src目录

须藤让-C/SYS /克恩/的sysent

接下来,我添加的文件到/ SYS/conf目录/文件

kern/mykern.c  standard 

而且,我加入了系统调用/kern/capabilities.conf

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

最后,而在/ usr/src目录/我跑的命令

须藤使-j8内核

而在这一步,我得到:

make don't know how to make kernel. Stop 

make stopped in /usr/src 
+1

这是'make buildkernel',我怀疑。 – arrowd

+0

make buildkernel,同样的错误!我失去了我的希望! – user7194905

+0

[在FreeBSD-11.0-RELEASE-amd64上添加新的系统调用]的可能重复(http://stackoverflow.com/questions/42186375/add-a-new-system-call-at-freebsd-11-0-释放-AMD64) – arved

回答

1

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