Código común para kernel y espacio de usuario

Código común para kernel y espacio de usuario

Estoy trabajando en un proyecto de Linux. Quiero tener algo de código (para ser específico, una estructura) y un archivo de encabezado (mi propia implementación) común tanto al kernel como al espacio de usuario. ¿Alguien puede decirme cómo implementar esto?

Respuesta1

La respuesta simple es simplemente incluir el encabezado en ambas partes del proyecto (compiladas por separado). Puedes hacerlo como quieras; una jerarquía de directorios obvia podría verse así:

project/
    userspace_stuff/
    kernal_stuff/
    inc/
       project_namespace/

Es inc/project_namespaceopcional: puede colocar fácilmente el encabezado en el nivel superior y utilizarlo #include "../myheader.h"en los archivos fuente de los dos subdirectorios. Personalmente, encuentro que usar rutas relativas con inclusiones puede resultar complicado, por lo que me gusta tener un incdirectorio y rutas absolutas ( #include <project_namespace/myheader.h>), facilitadas al organizar un archivo MAKE de nivel superior con algo como:

INC = -Iinc
CFLAGS += $(INC)

información relacionada