Что находится в include/uapi исходного проекта ядра

#c #linux

Вопрос:

Может ли кто-нибудь, пожалуйста, дать мне документ, описывающий исходные папки ядра, их структуру, функциональность и то, как они организованы?

В частности, какая польза от папки include/uapi/**?

Спасибо.

Ответ №1:

Предполагается uapi , что папка должна содержать API пользовательского пространства ядра. Затем при установке ядра включаемые файлы uapi становятся файлами верхнего уровня /usr/include/linux/. (Я не совсем понимаю, какие исключения остаются.)

Другие заголовки теоретически являются закрытыми для ядра. Это позволяет четко разделить структуры, видимые пользователю, и структуры, доступные только для ядра, которые ранее были объединены в один заголовочный файл.

Лучшее обсуждение этого вопроса, которое я видел, находится в еженедельной новостной статье Linux, которая предшествовала выходу патча.

Сам патч UAPI был выпущен с ядром 3.7. Краткое и грязное резюме Лайнуса:

  • «uapi» включает очистку файлов. Идея состоит в том, что материалы, экспортируемые в пространство пользователя, теперь должны быть найдены в разделах include/uapi и arch/$(ARCH)/include/uapi.

    Будем надеяться, что это действительно сработает. Потому что в противном случае это была просто совершенно бессмысленная боль в *сс. И, несмотря на это, я определенно покончил с такого рода «давайте проведем массовую очистку включенных файлов» навсегда.