阅读:1013回复:0
求救(急):模块编程中的oops错误
目的:在模块中实现一个队列操作
问题:刚刚做队列初始化就被废了。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 ..... |
|