Ошибка конфликта при попытке скомпилировать файл системного вызова .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);

person CoderInNetwork    schedule 09.11.2012    source источник
comment
Да ладно, нельзя вырезать и вставлять сообщения вместо скриншота?!   -  person Volker Stolz    schedule 12.11.2012


Ответы (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>

Он выполнит соответствующие шаги, чтобы настроить для вас правильную среду сборки модуля.

person Maxim Dounin    schedule 12.11.2012
comment
спасибо, проблема решена путем изменения моего make-файла, такого как ваше описание. Я хочу пожертвовать, но ТАК говорит: вы можете присудить свою награду через 20 часов .. я дам ее завтра. спасибо - person CoderInNetwork; 12.11.2012