当前位置:  技术问答>linux和unix

内核函数地址的问题

    来源: 互联网  发布时间:2017-04-28

    本文导语:  我使用的是2.6内核自己编写了两个模块 a.ko、b.ko 模块功能也非常简单,代码如下: static int _init a_init(void) {    printk("%p", usb_register);    return 1; } static void _exit a_exit(void) { } module_init(a_init); module_init(a_exit); ...

我使用的是2.6内核自己编写了两个模块 a.ko、b.ko 模块功能也非常简单,代码如下:

static int _init a_init(void)
{
   printk("%p", usb_register);
   return 1;
}

static void _exit a_exit(void)
{
}

module_init(a_init);
module_init(a_exit);

两个模块代码一样, 就是打印usb_register这个内核函数的地址, 按照我自己的理解,usb_register是编译到内核里面的,它的地址应该是固定的(对于每个模块),而实际上在我insmod 这两个模块后,两个模块打印的地址是不一样的,因此感到非常不解,希望各位指点。
另外我用 cat /proc/kallsyms | grep usb 根本没有usb_register这个函数,这又是为何?

|
usb_register这个函数调用的是usb_register_driver,这个函数是在usb的模块中。

没有加载这个模块把。

|
usb_register是有的,只是没有导出来,你用usb_register_driver就好了。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。














站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,