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

以模块B对kernel中的函数指针进行赋值可行否?

    来源: 互联网  发布时间:2017-01-14

    本文导语:     我现在在做模块移植。以前模块A的功能是全部写在内核的/net/bridge目录下的。现在我要做的事就是把模块A的功能全部移值出来,形成一个模块B,模块B会以insmod的形式运行。    移值的具体方法为:以前模块A嵌在bridge中...


   我现在在做模块移植。以前模块A的功能是全部写在内核的/net/bridge目录下的。现在我要做的事就是把模块A的功能全部移值出来,形成一个模块B,模块B会以insmod的形式运行。

   移值的具体方法为:以前模块A嵌在bridge中的功能函数,全部放到模块B中去。而在bridge目录里各个文件中的原调用点,全部放上函数指针,因为功能函数经过整合,所以放函数指针的位置大概只有五六处,还可以容忍。

   同时kernel里对外提供一个接口,让模块B对这些函数指针进行赋值,把原来的处理函数赋给这些指针。以便kernel调用。

   我的问题是:

   1.以上的思路是否可行?如果可行,能否提供一个例子让我参考一下。或者贴部分代码示意一下?

   2.模块B中还有些数据是kernel里的函数指针运行时要使用的。我就在模块B中用static定义这些数据,在kernel中用extern声明一下,是不是就可以用了?
     如果不是,要如何才可用?也请给个例子。。。。。。。

   多谢诸位赐教~~~~

|
1、 估计不行内嵌的模块会先于insmod,被调用会发现你的函数指针为空(非法更杯具)。
2、 被声明static的变量只能在本文件内有效,在别的地方extern声明编译“应该”是会出错的,如果你真的想给外部使用你的数据应该是提供接口,而不是让别人直接访问你的数据,如果非要直接访问数据,那么你就没必要分模块了。

|
可以的,EXPORT_SYMBOL 了就可以复制那些了。使用的时候判断是不是为空咯

|
当然可以了,linux是单内核结构,所有kernel模块都是共享内存地址的,
比如说linux的设备驱动程序就是这样的,我们去填充file_operations里面得各个函数指针,
而这些函数指针则是有内核中的其他模块调用的

|
怎么可以用static申明变量,然后再其他模块中间用extern来应用了,就直接定义成全局变量就可以了

|

对,第1点,保证B这个内核模块在/net/***代码执行前加载即可.

    
 
 

您可能感兴趣的文章:

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












  • 相关文章推荐
  • Linux中一个模块中的函数如何被另一个模块调用?
  • linux内核模块间调用函数
  • 怎样让模块加载之后自动执行里面的函数
  • 在应用程序中如何访问模块导出的函数
  • 驱动模块中用socket,哪有相关的函数啊??
  • 问个在模块中调用内核函数的未定义问题
  • 问个模块函数问题,很棘手
  • 内核源文件/net/socket.c中调用其他模块的函数,该如何实现
  • 请问在Unix下开发ftp传输模块,有没有什么系统函数可以调用。
  • 模块编译时可不可以使用库函数
  • 两个内核模块之间的如何调用变量,函数?
  • linux 模块调用内核函数sys_kill
  • 我用的是atmel一个成熟的开发板。有一个触摸屏驱动程序,以<M>的方式编译为模块,编译时提示某个外部函数没有定义,但如果以<*>的方式编译进内核,则不会出错。请教下可能是什么原因?
  • Linux内核模块里的读写函数
  • 写内核模块时,哪些函数可以用,哪些不能用?
  • 模块函数提供EXPORT_SYMBOL的问题
  • 想各位说明一下这个简单的内核模块里面各个函数的含义
  • python中使用sys模板和logging模块获取行号和函数名的方法
  • Python time模块详解(常用函数实例讲解,非常好)
  • Python异常模块traceback用法举例
  • insmod模块无显示,但rmmod模块有显示
  • Python的MySQLdb模块安装
  • *******是不是对内核模块编程然后再重新编译内核就可以把此模块整合到linux系统中
  • 传感器模块、gprs模块如何和我的2440开发板相连
  • 大侠帮忙!模块调试(非内核模块)
  • 想删除内核中的一个模块,输入命令后,系统提示该模块不存在。但是我lsmod时,它在/proc/modules中。求解。
  • 驱动模块可以编入内核,想单独编译成模块,makefile怎么写?
  • 同机装有Windows和Linux两套系统(先装Win后装Linux),如何使计算机使用Windows的启动模块而不是Linux的启动模块?
  • 自己写的内核模块与用户模块通信(交互)
  • 如何停止模块运行
  • 弱弱的问一个关于"模块化编程"的问题


  • 站内导航:


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

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3