2017-02-12 39 views
2

Я новичок в FreeBSD. Я установил 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 функции I редактирования встраивать:

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.