Я знаю, что kmalloc()
может заменить malloc()
на пространство ядра. Многие думают, что malloc()
не может работать в пространстве ядра; Однако, я нашел это определение в linux-4.9.6/include/linux/decompress/mm.h
Является ли malloc() в пространстве ядра?
static void *malloc(int size)
{
void *p;
if (size < 0)
return NULL;
if (!malloc_ptr)
malloc_ptr = free_mem_ptr;
malloc_ptr = (malloc_ptr + 3) & ~3; /* Align */
p = (void *)malloc_ptr;
malloc_ptr += size;
if (free_mem_end_ptr && malloc_ptr >= free_mem_end_ptr)
return NULL;
malloc_count++;
return p;
}
Означает ли это, что мы можем использовать malloc()
на уровне ядра?
Это не для общего использования ядра. Заголовок файла сообщает вам, для чего он предназначен: «Управление памятью для предварительных загрузок и дискомпрессоров ramdisk». – kaylum
Прочтите эту функцию и выясните, подходит ли она для замены универсальной замены malloc. –