Как мне сделать вызовы стандартной библиотеки из ядра Linux? - PullRequest
2 голосов
/ 10 августа 2011

Я настраиваю код, находящийся в каталоге /net ядра Linux.

Я пробовал такие вещи, как печать, но я вижу, что нет соответствующих заголовков (таких как stdlib.h, stdio.h и т. Д.),Так как я могу сделать это на уровне ядра?

Ответы [ 2 ]

5 голосов
/ 10 августа 2011

Вы не можете использовать любые функции библиотеки пространства пользователя в ядре. Вы должны использовать только функции, экспортируемые ядром.Так что не будет stdio.h, stdlib.h и т. Д. Если вы хотите что-то напечатать в ядре, у вас есть функция printk(), это эквивалентно printf() в пространстве пользователя.

См. Также мои сообщения в блоге Программирование модуля Linux Часть 1 и Часть 2 .

2 голосов
/ 11 августа 2011

Модули ядра не имеют доступа к стандартной библиотеке C.В ядре доступно несколько функций;посмотрите в каталог lib в исходном коде ядра или в вашей любимой книге по программированию ядра Linux (если у вас ее нет, Драйверы устройств Linux - это хороший вариант, и этодоступно онлайн).Для отладки printf есть printk, который отправляет сообщения в журналы ядра.

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