Заголовок свободных электронов является внутренним для исходного кода ядра, и вы найдете его, если заглянете в [src] / include / linux
; если вы компилируете код ядра, это должно быть в игре.
Заголовок, который вы вставили, является системным заголовком из / usr / include / linux
. Это для пользовательского кода , которому требуется доступ к определенным в нем константам и макросам.
На самом деле они не конфликтуют. Обратите внимание на верхнюю часть более длинного внутреннего пути ядра:
#include <uapi/linux/pci.h>
Этот путь не существует в обычных системных каталогах include, но он существует в [src] / include
, и если вы проверите там вы заметите, что этот файл почти идентичен /usr/include/linux/pci.h
вашей системы. Вот как код ядра может получить доступ к одним и тем же значениям, а также ко всему, что ему нужно внутри, поскольку обычный linux / pci.h
будет заменен чем-то вроде -I [src] / include
, но код ядра, содержащий #include
, будет загружать [src] /include/linux/pci.h
, который втягивает [ src] /include/uapi/pci.h
, который идентичен /usr/include/linux/pci.h
.