Предоставление дополнительного заголовка для пользовательского пространства в ядре Linux - PullRequest
0 голосов
/ 07 июня 2018

Я поддерживал локальный патч для ядра Linux-4.9 для исследования.Патч добавляет три системных вызова.Системные вызовы не подходят для апстримирования.

До сих пор я использовал make deb-pkg для генерации пакетов Debian для моего ядра.После установки пользовательское пространство может вызывать новые системные вызовы, используя syscall(2), одному из макросов __NR_..., сгенерированных процессом сборки.

Проблема, которую я хочу решить, состоит в следующем: заголовок, который определяет номера системных вызовов,в пакете libc-dev, сгенерированном make deb-pkg.Установка пользовательского libc-dev вызывает хаос для apt-get (в последний раз, когда я устанавливал свой пользовательский libc-dev, он удалил все llvm и gcc и сделал apt-get непригодным для использования с некоторыми странными сценариями «удерживаемых пакетов», которые я не делаюпонять (несмотря на то, что dpkg --get-selections не показывает никаких сохраненных пакетов)).

Я хотел бы добавить заголовок моего собственного крафта с заголовками ядра, таким образом избегая ужасного пакета libc-dev в целом.

Мой патч добавляет каталог krun к верхнему уровню директории источника ядра:

$ find krun
krun
krun/test_prog
krun/Makefile
krun/test_prog.c
krun/krun_reg.h
krun/.gitignore
krun/krun-kernel.h
krun/krun.c

Из чтения Linux-4.9 Kernel Docs , кажется, ядолжен быть в состоянии выставить krun-kernel.h, используя header-y.

Так что krun/Makefile выглядит так:

obj-y := krun.o
header-y += krun-kernel.h

test_prog: test_prog.c
        ${CC} ${CFLAGS} ${LDFLAGS} -Wall -Wextra -o $@ $<
clean:
        rm -f test_prog

и в Makefile верхнего уровня, у меня есть:

core-y          += krun/                                                        
header-y        += krun/ 

Однако, если я запускаю:

$ make headers_install INSTALL_HDR_PATH=./tmp_hdrs

Мой заголовок нигде не виден под tmp_hdrs.

Возможно ли это как-нибудь?Спасибо.

1 Ответ

0 голосов
/ 07 июня 2018

Я собираюсь попытаться ответить на мой собственный вопрос.

С Kbuild, кажется, вы можете сделать две вещи WRT-заголовками:

  • Предоставить их пользователям и получить ихупакованы в libc-dev.
  • Установите их в качестве заголовков ядра, которые не могут быть включены пользовательским пространством.

Так что то, что я спрашиваю, не может быть сделано.

Лучшее решение для меня (к сожалению) - вручную скопировать заголовок в системный каталог include.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...