LinuxARM7
驱动牛犊
驱动牛犊
  • 注册日期2003-01-24
  • 最后登录2004-01-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:981回复:0

求救(急):模块编程中的oops错误

楼主#
更多 发布于:2003-10-14 21:19
目的:在模块中实现一个队列操作
问题:刚刚做队列初始化就被废了。oops错误。请大侠看看,问题究竟在哪里?我的队列定义没问题吧?我猜就在kmalloc()处,大侠帮忙啦。。。

struct uwb_QNode{
    unsigned char pkt_type;
    unsigned char priority;
    u32 truesize;
    u32 data[DATA_PACKET_SIZE];// DATA_PACKET_SIZE:500

    struct uwb_QNode  *next;
   }//节点

struct uwb_Q{
    struct uwb_QNode *front;
    struct uwb_QNode *rear;
   }//队列首尾指针

static int Init_uwb_Q(struct uwb_Q *Qptr)
{   Qptr->front=(struct uwb_QNode *) kmalloc(sizeof(struct uwb_QNode),GFP_KERNEL);        //  !!!此行错在哪里???
    if(Qptr->front==NULL) return -ENOMEM;      
    retrun 0;}

struct uwb_Q Q1;
int init_module(void)
{
   ....

   Init_uwb_Q(Q1);
  ....
}


编译通过,一运行insmod 此模块,就完蛋。segmenation faults. 在X下,甚至都死掉。
/var/log/messages中的记录片段:

oops 0002
unable to handle kernel NULL pointer dereferende at virtual address 00000000
.....
EIP ia st Init_uwb_Q
.....
游客

返回顶部