2017-02-12 10 views
2

私はFreeBSDの初心者です。 VMにFreeBSD-11.0-RELEASE-amd64をインストールしました。 最初に新しいシステムコールを追加したいと思います。先週のmy postです 今、私はカーネルを構築したいと思います。私はhandbookを参照してください。 しかし、コマンドmake buildkernelで、エラーを示しています!FreeBSD-11.0-RELEASE-amd64で新しいシステムコールを追加します。

mykern.c

#include <sys/sysproto.h> 
#include <sys/param.h> 
#include <sys/types.h> 
#include <sys/systm.h> 
#include <sys/module.h> 
#include <sys/kernel.h> 
#include <sys/proc.h> 
#include <sys/sysent.h> 

#ifndef _SYS_SYSPROTO_H_ 
    struct myargs { 
     unsigned int k0; 
     unsigned int k1; 
}; 
#endif 

int func (struct thread *td, void *args) 
{ 
    struct myargs *uap; 
    uap = (struct myargs *)args; 
    printf("Hello"); 
    return (0); 
} 

最初のエラーが

/usr/src/sys/kern/mykern.c:12:5: error:no previous prototype for function 'func' [-Werror, -Wmissing-prototypes] 
int func(struct thread *p, struct myargs *uap) 

だったmykern.cに私は、インラインに関数を編集します。

inline int func (struct thread *td, void *args) 

そして今、新しいエラー:

init sysent.o:(.data 0xg720): undefined refrence to 'sys_func' 

そして、私はコマンドを入力し

make init_sysent.c 
'init_sysent.c' is up to date 
+0

いいえご存知ですか?経験なし? – user7194905

答えて

2

システムコールはsys_で始まる名前を持つ必要があります。 /usr/src/sys/kernの他のファイルを見てください。

関連する問題