您的位置:程序门 -> linux/unix社区 -> 内核及驱动程序研究区



驱动代码与操作出错...


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


驱动代码与操作出错...
发表于:2007-08-05 12:48:19 楼主
//现象使用下面的代码描述;
//由于代码比较长,只写出简单的部分代码:
//param是一个结构体,
//第一种情况
1:       printk( "1=%d\n ",param-> width);
2:       length=param-> width;
3:       printk( "2=%d\n ",length);    
4:       length=(length   &   0xffff);
5:       printk( "3=%d\n ",length);
6:       length=(length+offset)> 0xffff   ?(1000):length;
##输出结果为:

1=512;
2=512;
3=512;
#第二种情况
1:       printk( "1=%d\n ",param-> width);
2:       length=param-> width;
3:       //printk( "2=%d\n ",length);    
4:       length=(length   &   0xffff);
5:       printk( "3=%d\n ",length);
6:       le3ngth=(length+offset)> 0xffff   ?(1000):length;
####输出结果为:
1=512
3=0
没有打印语句时就出现错误....

#第三种情况
1:       printk( "1=%d\n ",param-> width);
2:       length=param-> width;
3:       printk( "2=%d\n ",length);    
4:       //length=(length   &   0xffff);
5:       printk( "3=%d\n ",length);
6:       le3ngth=(length+offset)> 0xffff   ?(1000):length;
####输出结果为:
1=512
2=512
3=512
去掉与操作指令也没有问题了
//cpu为mips,怀疑是编译选项的问题,但是具体什么选项不清楚;
请高手指点,非常感谢
发表于:2007-08-05 12:59:521楼 得分:0
因此也会暴出其他类似的诡异错误,根源可能都是同一个;
问题比较紧迫,望高手赐教..
在线等待中...........
发表于:2007-09-06 15:39:472楼 得分:0
和编译选项肯定有关系,   加了优化了.
再加上中间有个jmp之类的,   而你的length变量不是全局的,   建议给length变量的声明加上volatile.


快速检索

最新资讯
热门点击