O cabeçalho de elétrons livres é interno à fonte do kernel, e você o encontrará se procurar em [src]/include/linux
; se você está compilando o código do kernel, isso deve estar em jogo.
O cabeçalho que você colou é o cabeçalho do sistema, de /usr/include/linux
. Isso é para o código do usuário terra que precisa de acesso às constantes e macros definidas nele.
Estes não entram em conflito. Observe no topo do kernel interno mais longo do kernel:
#include <uapi/linux/pci.h>
Esse caminho não existe no sistema normal, inclua diretórios, mas ele existe em [src]/include
, e se você verificar lá para este arquivo, você notará que é praticamente idêntico ao /usr/include/linux/pci.h
do seu sistema. É assim que o código do kernel pode acessar os mesmos valores, além de todo o material necessário internamente, já que o usual linux/pci.h
foi substituído por algo como -I[src]/include
, mas o código do kernel que contém #include <linux/pci.h>
extrairá [src]/include/linux/pci.h
puxa em [src]/include/uapi/pci.h
que é idêntico a /usr/include/linux/pci.h
.