Ошибка конфликта при попытке скомпилировать файл.c системного вызова в freebsd
Я пытаюсь добавить новый системный вызов в freebsd 8. Я использую freebsd на VMplayer . Когда я пытаюсь скомпилировать модуль, я выдаю эту ошибку:
мой код (у меня также есть файл Makefile):
#include <sys/param.h>
#include <sys/types.h>
#include <sys/proc.h>
#include <sys/module.h>
#include <sys/sysent.h>
#include <sys/kernel.h>
#include <sys/systm.h>
#include <sys/sysproto.h>
struct user_datas{
};
static char* rot13func(struct thread* td , void* args)
{
struct user_datas* upp=args;
char* myarray=(upp->input);
return myarray;
}
static struct sysent rot13func_sysent={
1,
rot13func
};
static int offset=NO_SYSCALL;
static int load (struct module *module , int cmd, void *arg)
{
int error=0;
switch(cmd){
case MOD_LOAD:
break;
case MOD_UNLOAD:
break;
default:
error=EOPNOTSUPP;
break;
}
return(error);
}
SYSCALL_MODULE(rot13func, &offset , & rot13func_sysent , load, NULL);
1 ответ
Решение
Похоже, ваш Makefile неверен и использует неправильные пути включения. Попробуйте использовать один из /usr/share/examples/kld/syscall/module/
пример, который выглядит так:
# Makefile for building the sample syscall module
# $FreeBSD: src/share/examples/kld/syscall/module/Makefile,v 1.2 2001/09/18 12:03:42 ru Exp $
KMOD= syscall
SRCS= syscall.c
.include <bsd.kmod.mk>
Он сделает соответствующие шаги, чтобы настроить правильную среду сборки модуля для вас.