编写linux内核模块的时候调用get_free_page函数出错!
#ifndef__KERNEL__#define__KERNEL__#endif#ifndefMODULE#defineMODULE#endif#include<linu...
#ifndef __KERNEL__
# define __KERNEL__
#endif
#ifndef MODULE
# define MODULE
#endif
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/slab.h>
MODULE_LICENSE("GPL");//证书
char *buf1 = NULL;
char *buf2 = NULL;
int alloc_init()
{
buf1 = kmalloc(100,GFP_KERNEL);//申请100个空间,kmalloc在堆中分配内存空间
memset(buf1,0,100);//初始化这部分内存空间100字节
strcpy(buf1,"<<< --- Kmalloc Mem OK! --- >>>");//往内存里面放入字符串
printk("BUF 1 : %s\n",buf1);//打印里面的内容
buf2 = get_free_page(GFP_KERNEL);//获取空闲页,1页 4K
memset(buf2,0,1024);//初始化这片空间
strcpy(buf2,"<<<--- Get Free Page OK! --- >>>");
printk("BUF 2 : %s\n",buf2);//打印内容
return 0;
}
。。。。。。。。。。。。。。。后面的一部分就不写了
这个内核模块程序,会出现错误,/home/fantasy/program/kernel/mem/alloc_mem.c:27:2: error: implicit declaration of function 'get_free_page'
这个是什么问题?
找不到get_free_page函数的声明?那么这个函数在哪声明的呢? 展开
# define __KERNEL__
#endif
#ifndef MODULE
# define MODULE
#endif
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/slab.h>
MODULE_LICENSE("GPL");//证书
char *buf1 = NULL;
char *buf2 = NULL;
int alloc_init()
{
buf1 = kmalloc(100,GFP_KERNEL);//申请100个空间,kmalloc在堆中分配内存空间
memset(buf1,0,100);//初始化这部分内存空间100字节
strcpy(buf1,"<<< --- Kmalloc Mem OK! --- >>>");//往内存里面放入字符串
printk("BUF 1 : %s\n",buf1);//打印里面的内容
buf2 = get_free_page(GFP_KERNEL);//获取空闲页,1页 4K
memset(buf2,0,1024);//初始化这片空间
strcpy(buf2,"<<<--- Get Free Page OK! --- >>>");
printk("BUF 2 : %s\n",buf2);//打印内容
return 0;
}
。。。。。。。。。。。。。。。后面的一部分就不写了
这个内核模块程序,会出现错误,/home/fantasy/program/kernel/mem/alloc_mem.c:27:2: error: implicit declaration of function 'get_free_page'
这个是什么问题?
找不到get_free_page函数的声明?那么这个函数在哪声明的呢? 展开
5个回答
展开全部
去lxr.linux.no搜索...可以对kernel进行全文检索....
你得内核版本是多少呢..只有__get_free_page,没有get_free_page,,定义在inux/gfp.h中。
你再试试,我是直接从3.01版本的内核中找到的..(不知不觉到了3.0l了..2,4和2.6都过去了。.)
你得内核版本是多少呢..只有__get_free_page,没有get_free_page,,定义在inux/gfp.h中。
你再试试,我是直接从3.01版本的内核中找到的..(不知不觉到了3.0l了..2,4和2.6都过去了。.)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
谁教你用这个函数的?一般的驱动里面不会使用这个函数,都是kmalloc或者kzmalloc了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
;gfp..6都过去了.01版本的内核中找到的.0l了.
你得内核版本是多少呢。.h中.可以对kernel进行全文检索..,定义在inux/,没有get_free_page,4和2。
你再试试..(不知不觉到了3..只有__get_free_page.linux.2...no搜索,我是直接从3.去lxr
你得内核版本是多少呢。.h中.可以对kernel进行全文检索..,定义在inux/,没有get_free_page,4和2。
你再试试..(不知不觉到了3..只有__get_free_page.linux.2...no搜索,我是直接从3.去lxr
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-08-07
展开全部
不知道
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |