免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2760 | 回复: 2
打印 上一主题 下一主题

[网络子系统] kmalloc加载模块时出问题了?? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-10-13 17:22 |只看该作者 |倒序浏览
     
         各位,我写个网络驱动,用到NAPI,在priv结构中定义了缓冲池,大概代码如下:
  1. void drv_create_pool(struct net_device*dev)
  2. {
  3.     struct drv_priv*priv=netdev_priv(dev);
  4.     int i;
  5.     struct drv_data* pool=NULL; /*drv_data结构是定义缓冲单元*/
  6.     priv->drv_pool=NULL;/*drv_pool为其缓冲池首指针*/
  7.     for(i=0;i<10;i++){
  8.         pool=kmalloc(sizeof(struct drv_data),GFP_KERNEL);
  9.         if(pool==NULL){
  10.             return;
  11.         }
  12.         pool->dev=dev;
  13.         pool->next=priv->drv_pool;
  14.         priv->drv_pool=pool;
  15.     }
  16. }


复制代码
问题来了,在给其分配缓冲池空间时候,kmalloc函数      在编译时候没有问题,但是insmod的时候,就不能加载进去,错误是:  Unknown symbol in module

dmesg:

Unknown symbol kmem_cache_alloc_trace

我估计是kmalloc的问题,有什么解决办法吗??

论坛徽章:
9
辰龙
日期:2014-08-18 20:38:42未羊
日期:2014-09-04 08:50:45丑牛
日期:2014-09-06 00:12:55寅虎
日期:2014-12-22 20:50:56摩羯座
日期:2015-01-14 22:28:15巳蛇
日期:2015-01-23 20:39:272015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之青岛
日期:2016-03-13 23:37:1915-16赛季CBA联赛之深圳
日期:2016-03-29 18:52:38
2 [报告]
发表于 2014-10-14 00:46 |只看该作者
回复 1# 雷锋不谢

这类问题99%是你编译模块所有的内核和真正运行的内核不一致。自己好好检查一个编译环境吧。

   

论坛徽章:
0
3 [报告]
发表于 2014-10-14 10:43 |只看该作者
回复 2# Tinnal


    恩,谢谢,好的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP