Организация заголовков ядра Linux - PullRequest
6 голосов
/ 21 марта 2012

Пока я читал системные вызовы, я выполнил поиск syscalls.h, чтобы найти файл заголовка в LXR. Результаты поиска меня озадачили. Существует дюжина syscalls.h файлов из каталогов под arch/_arch_name_/include/asm. Это нормально, это специфичные для архитектуры определения или что-то еще необходимое. Вопрос в том, почему у нас есть два разных syscalls.h заголовка под include/linux и include/asm-generic?

Кроме того, я хочу выяснить, для чего нужны заголовки include/linux и для чего заголовки include/asm-generic. Как они различают друг друга? Какова логика наличия двух отдельных папок заголовка? Как они связаны друг с другом?

Спасибо

Ответы [ 2 ]

6 голосов
/ 28 марта 2012

Я задавал этот вопрос на Kernel Newbies ML .Я получил следующий ответ, который разъясняет:) код.Скорее всего, вам не нужно включать эти заголовки напрямую, вместо этого мы включаем эти заголовки косвенно через заголовки, зависящие от architecthure.

OTOH, каталог / include / linux предназначен для общих заголовочных файлов, чтобы определить интерфейсы между компонентами ядра.В большинстве ситуаций вы найдете все необходимые функции ядра в этих заголовках.

regards, chngr.

1 голос
/ 22 марта 2012

Заголовки в каталогах arch/_arch_name_/include/asm зависят от конкретной архитектуры, например, для архитектуры x86, ARM.Таким образом, внутренняя логика зависит от платформы и сильно зависит от базового оборудования.Вы будете включать только архитектуру вашей платформы.

Заголовки в include/linux являются общими и независимыми от платформы.Они являются общей логикой и будут разделены между архитектурами.

...