今天碰上怪事了!
我定义了一个结构体:adlink_device,里面包括一个指向cdev结构的指针pcdev
然后定义了该结构体的一个全局变量adl_dev
在加载设备的时候,初始化adl_dev.pcdev如下:
adl_dev.pcdev=cdev_alloc;
(*adl_dev.pcdev).owner= THIS_MODULE;
(*adl_dev.pcdev).ops= &adl_fops;
cdev_add(adl_dev.pcdev,devno,1);
我这时候打印adl_dev.pcdev,是有地址的!
然后我啥都没干就卸载函数了啊
问题我卸载还啥都没干呢,这adl_dev.pcdev已经为0了,这怎么回事啊!从来没有碰到过这么怪的问题!
我一开始以为是可能系统背后有清除指令,我在结构体:adlink_device中又定义了一个无关的num整形变量
并在初始函数中时赋值为15;
然后到卸载函数的开头调用打印,结果还是为0,真搞不懂是怎么回事了
wucongdonglai 于 2011-01-24 08:27:58发表:
4# deepwhite
呵呵,在我简化代码的时候,发现我的一个宏用错了!所以搞成这样了!也就不好意思传上来了,丢人!呵呵!不管怎么样,多谢white兄,最近没少麻烦!真是汗颜
deepwhite 于 2011-01-21 12:41:53发表:
又没下文了……
wucongdonglai 于 2011-01-19 13:08:27发表:
2# deepwhite
这不是怕大家看着麻烦么!那我把那些不相干的结构删除了后传上来
deepwhite 于 2011-01-19 13:03:49发表:
你还是上代码吧。
在代码中加上点注释,会比你“干说” 更能描述问题。