Linuxカーネルモジュールを作成していますが、実行可能ページを割り当てたいと思います。Plainkmalloc()
は実行不可能なページ内にポインタを返し、そこでコードを実行するとカーネルパニックが発生します。Ubuntu Karmic x86、2.6.31-20-generic-paeで動作する必要があります。
質問する
3009 次
2 に答える
11
#include <linux/vmalloc.h>
#include <asm/pgtype_types.h>
...
char *p = __vmalloc(byte_size, GFP_KERNEL, PAGE_KERNEL_EXEC);
...
if (p != NULL) vfree(p);
于 2010-03-16T23:31:54.483 に答える
1
/**
* vmalloc_exec - allocate virtually contiguous, executable memory
* @size: allocation size
*
* Kernel-internal function to allocate enough pages to cover @size
* the page level allocator and map them into contiguous and
* executable kernel virtual space.
*
* For tight control over page level allocator and protection flags
* use __vmalloc() instead.
*
* Return: pointer to the allocated memory or %NULL on error
*/
void *vmalloc_exec(unsigned long size)
{
return __vmalloc_node(size, 1, GFP_KERNEL, PAGE_KERNEL_EXEC,
NUMA_NO_NODE, __builtin_return_address(0));
}
于 2019-05-31T02:49:59.873 に答える