如何在Centos6中获取符号地址vmalloc_node_range

问题描述

static struct kprobe kp={.symbol_name = "kallsyms_lookup_name",};

int get_kallsyms_lookup_name(void)
{
   int ret = register_kprobe(&kp);
   if(ret < 0){
   printk("[err] %s. register_kprobe Failed,ret:%d\n",__FUNCTION__,ret);
   return ret;
   }
  printk("[info] %s. kprobe at addr:%p,kp.addr,ret);
  orig_kallsyms_lookup_name = (kallsyms_lookup_name_t)(void*)kp.addr;
  unregister_kprobe(&kp);
  return ret;
}

 
static int __init init(void)
{
    if(get_kallsyms_lookup_name() < 0)
    {
      printk("[err] %s Failed!\n",__FUNCTION__);
      return -1; 
}

___vmalloc_node_range = (void *)orig_kallsyms_lookup_name("__vmalloc_node");
if(!___vmalloc_node_range)
   printk("error");
   return -1;
}

我需要它来获得vmalloc_node_range,但它只得到vmalloc_node

#define START _AC(0xffffffffa0000000,UL)
#define END   _AC(0xffffffffff000000,UL)

我必须为我的模块请求STARTEND间的内存。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)