A resposta simples é incluir apenas o cabeçalho em ambas as partes (separadamente compiladas) do projeto. Você pode fazer isso como quiser; uma hierarquia óbvia de diretórios pode parecer:
project/
userspace_stuff/
kernal_stuff/
inc/
project_namespace/
O inc/project_namespace
é opcional - você poderia facilmente colocar o cabeçalho no nível superior e usar #include "../myheader.h"
nos arquivos de origem nos dois subdiretórios. Pessoalmente, acho que usar caminhos relativos com includes pode ficar confuso, então eu gosto de ter um diretório inc
e caminhos absolutos ( #include <project_namespace/myheader.h>
), facilitado pela organização de um makefile de nível superior com algo como:
INC = -Iinc
CFLAGS += $(INC)