私はkmalloc()
がmalloc()
をカーネルスペースに置き換えることができることを知っています。多くの人々は、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;
}
でこの定義を見つけましたか?一言で
一般的なカーネルの使用ではありません。ファイルヘッダーは、それが何であるかを正確に示しています: "ブート前とラムディスクの圧縮解除のためのメモリ管理"。 – kaylum
関数を読んで、汎用malloc置換として適しているかどうかを調べてください。 –