u-boot-2012.04.01编译问题7:warning: right-hand operand of comma expression has no effect [-Wunused-value

编译uboot时遇到问题:devextras.h:202:25: warning: right-hand operand of comma expression has no effect [-Wunused-value]
  for (pos = (head)->next, prefetch(pos->next); pos != (head); \
就是prefetch(pos->next)没有作用

简单的解决办法就是把prefetch(pos->next)删掉就可以解决问题

找出源文件:find -name devextras.h,把prefetch(pos->next)删掉,重新编译后问题解决

~/test/u-boot-2012.04.01$ vim ./fs/yaffs2/devextras.h +202

#define list_for_each(pos, head) \
        for (pos = (head)->next, prefetch(pos->next); pos != (head); \
                pos = pos->next, prefetch(pos->next))

参考:内核中prefetch的问题,prefetch 指令将数据放入缓存以提高链表查询性能,但文章认为prefetch不仅不能优化性能反而有害,所以简单的删除prefetch是解决问题的好办法

保留prefetch的解决办法可以通过修改devextras.h实现:

1、将devextras.h中的#define prefetch(x) 1删除(这条定义就说明prefetch没用)

2、重新定义prefetch函数

#ifndef ARCH_HAS_PREFETCH
#define ARCH_HAS_PREFETCH
static inline void prefetch(const void *x) {;}
#endif
//#define prefetch(x) 1
重新编译后问题解决

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值