Código comum para kernel e espaço de usuário

Código comum para kernel e espaço de usuário

Estou trabalhando em um projeto Linux. Quero ter algum código (para ser específico, uma estrutura) e um arquivo de cabeçalho (minha própria implementação) comum ao kernel e ao espaço do usuário. Alguém pode me dizer como implementar isso?

Responder1

A resposta simples é incluir apenas o cabeçalho em ambas as partes (compiladas separadamente) do projeto. Você pode fazer isso como quiser; uma hierarquia de diretórios óbvia pode ser semelhante a:

project/
    userspace_stuff/
    kernal_stuff/
    inc/
       project_namespace/

Isso inc/project_namespaceé opcional - você pode facilmente colocar o cabeçalho no nível superior e usá-lo #include "../myheader.h"nos arquivos de origem nos dois subdiretórios. Pessoalmente, acho que usar caminhos relativos com inclusões pode ser confuso, então gosto de ter um incdiretório e caminhos absolutos ( #include <project_namespace/myheader.h>), facilitados pela organização de um makefile de nível superior com algo como:

INC = -Iinc
CFLAGS += $(INC)

informação relacionada