Я настраиваю код, находящийся в каталоге /net ядра Linux.
/net
Я пробовал такие вещи, как печать, но я вижу, что нет соответствующих заголовков (таких как stdlib.h, stdio.h и т. Д.),Так как я могу сделать это на уровне ядра?
stdlib.h
stdio.h
Вы не можете использовать любые функции библиотеки пространства пользователя в ядре. Вы должны использовать только функции, экспортируемые ядром.Так что не будет stdio.h, stdlib.h и т. Д. Если вы хотите что-то напечатать в ядре, у вас есть функция printk(), это эквивалентно printf() в пространстве пользователя.
printk()
printf()
См. Также мои сообщения в блоге Программирование модуля Linux Часть 1 и Часть 2 .
Модули ядра не имеют доступа к стандартной библиотеке C.В ядре доступно несколько функций;посмотрите в каталог lib в исходном коде ядра или в вашей любимой книге по программированию ядра Linux (если у вас ее нет, Драйверы устройств Linux - это хороший вариант, и этодоступно онлайн).Для отладки printf есть printk, который отправляет сообщения в журналы ядра.
lib
printk