我可以在C中调用linux分配API函数吗?



我想在c中使用alloc_pages()分配物理页帧。我在内核模块中尝试过,它工作得很好。我想让代码在用户空间中运行,就像我们通常执行c代码一样。下面是代码:

#include <stdio.h>
#include <stdlib.h>
#include <linux/kernel.h>
#include <linux/module.h>
struct page *page1;
int main()
{
struct page *page;
page = alloc_pages(GFP_USER, 0);
printf("physical address: %pn", page);
page1 = page;
return 0;
}

首先它显示GFP_USER是未声明的,如果我在那里使用任何整数而不是标志,它显示:

对' alloc_pages'的未定义引用

很明显,它找不到函数,我不太清楚如何使它可用于我的代码。我该怎么做呢?我也知道我在这方面没有足够的知识,所以任何阅读材料都很感激。

Unix系统上的用户空间和内核空间是分开的,系统调用是与内核通信的唯一方式。总是有一些特例,但这是Unix系统的基本思想,因为Linux是。

的变体。您可以使用libc malloc()和类似的调用来分配内存,或者您可以使用mmap()这样的系统调用。

最新更新