malloc в ядре

Когда я пытаюсь использовать malloc в модуле ядра я получаю сообщение об ошибке из компилятора. Мой код:

res=(ListNode*)malloc(sizeof(ListNode));

Сообщение об ошибке компиляторов:

/root/ex3/ex3mod.c:491: error: implicit declaration of function ‘malloc’

Что мне делать?

9
задан Ramzi Khahil 31 March 2014 в 12:20
поделиться

2 ответа

Вы не можете использовать библиотеки в ядре. Никак нет.

Это означает, что ЛЮБАЯ функция, которую вы вызываете в ядре, должна быть определена в ядре. Linux не определяет malloc, поэтому вы не можете его использовать.

Есть распределитель памяти и семейство функций распределения памяти. Прочтите документацию ядра по распределителю памяти для получения дополнительной информации.

Кстати, ядро ​​определяет несколько функций, которые также есть в стандартной библиотеке C; это для удобства.

Это, например, определено snprintf

7
ответ дан 4 December 2019 в 06:09
поделиться

используйте kmalloc или vmalloc вместо этого (см. также this)

20
ответ дан 4 December 2019 в 06:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: