消息关闭
    暂无新消息!
内核编程新手。。

mem_map是一个struct page的数组,管理着系统中所有的物理内存页面。 的定义,在mm/memory.c中:
#ifndef CONFIG_NEED_MULTIPLE_NODES
/* use the per-pgdat data instead for discontigmem - mbligh */
unsigned long max_mapnr;
struct page *mem_map;
EXPORT_SYMBOL(max_mapnr);
EXPORT_SYMBOL(mem_map);
#endif

mem_map是一个全局变量。我想自己在模块中使用:
extern struct page *mem_map;
printk(KERN_ALERT "%ld/n",mem_map[0].flags);

编译提示:
WARNING: "mem_map" [/wyq/mem.ko] undefined!
insmod提示:
insmod: ERROR: could not insert module mem.ko: Unknown symbol in module
Unknown symbol mem_map

内核应该安装编译的没什么问题。不知道应该怎么写,是缺少什么头文件吗?

7个回答

︿ 3
1,你的模块 要放在 内核源码中修改。
2,Unknown symbol mem_map这说明mem_map这个变量 不希望通过这种方式去访问。
3,如果一定要访问 EXPORT_SYMBL(mem_map)。
4,标准用法是 get_current这个宏定义 找到本进程相关的mem_map相关的数据结构。
︿ 3
在mm/memory.c中 写个函数return它,函数要在.h声明,在调用函数的.c要include这个.h。
︿ 2
这是现成的实例,为什么我就云不出来。。。

来个大神啊,求助。
︿ 0
嗯,可以试试倒是,但是这样还要重新编译内核,就不想重编内核,只想在模块中处理一下。。