Заголовки ядра Linux - PullRequest
       23

Заголовки ядра Linux

2 голосов
/ 06 января 2011
  • Я хочу понять, какие типы заголовочных файлов находятся в "/ includes /" в базовой директории ядра. Являются ли эти файлы в некотором смысле «публичными» заголовками / API? Таким образом, не обращая внимания на архитектуру, переключатели конфигурации, которые были включены / отключены и т.д.?

  • Короче говоря, если я хочу использовать некоторые функции ядра ядра в своем драйвере, могу ли я с уверенностью предположить, что требуемая функция будет содержаться в одном из соответствующих заголовочных файлов в разделе "/ includes" и нигде более ?

С нетерпением ждем некоторых комментариев.

спасибо ..! * * 1013

Ответы [ 2 ]

6 голосов
/ 10 марта 2011

В последнее время я сам немного разбираюсь в этом вопросе.

Я не знаю, насколько связан этот ответ, поскольку похоже, что вы заинтересованы только в понимании упаковки исходного кода ядра, имеющегося у вас под рукой.Этот ответ, вероятно, относится только к вашему второму вопросу.Тем не менее, вот что я нашел в заголовках ядра.

Из того, что я обнаружил, есть два потенциальных местоположения, которые в конечном итоге называют "заголовками ядра".

Первая папка находится в / usr / src / linux-headers-`version '(по крайней мере, на моей машине с Ubuntu).Это где ваше ядро ​​(источник?) Установлено, а также сопровождающие заголовки.Если вы хотите собирать модули ядра, вам нужно будет собрать их с помощью заголовков, найденных здесь.

С другой стороны, / usr / include / {linux, asm} также содержат «заголовки ядра».Вы можете думать об этих заголовочных файлах как о пользовательском интерфейсе вашего ядра.Это API, экспортируемый ядром, поэтому пользовательские программы могут выполнять системные вызовы.Ваш libc воспользуется этим API, чтобы он мог создавать функции (в / usr / include) на основе доступных системных вызовов.

Вот пара документов, подтверждающих то, что я только что сказал, и поясняющих кое-что:

Вот ссылка на разницу между / usr / src / linux-headers-`version 'и / usr / include для RHEL4.

http://www.linuxquestions.org/questions/red-hat-31/rhel4-kernel-devel-headers-packages-missing-directories-697552/

Вот ссылка об «экспорте» заголовков ядра: http://www.kernel.org/doc/Documentation/make/headers_install.txt

Наконец, здесьЭто еще одно объяснение того, для чего нужны заголовки ядра: http://www.overclockers.com/forums/showthread.php?t=647638

Так что, возможно, вы уже знали об этом и просто хотели узнать, как создать драйвер, используя исходные коды в вашем пакете ядра, но, по крайней мере, с этим ответомВы знаете, что это определенно место для начала.

0 голосов
/ 06 января 2011

Да, include содержит стандартные API для использования при разработке ядра.

...