首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sparse引发的警告

sparse引发的警告
EN

Stack Overflow用户
提问于 2014-03-02 04:27:42
回答 1查看 891关注 0票数 3

当我在带有以下选项的Linux驱动程序上运行spare时,sparse抛出了以下警告:make C=2 CF=-D__CHECK_ENDIAN__

我的功能是:

代码语言:javascript
复制
static inline u8 rsi_get_register_addr(u8 *addr, u16 offset)
{
        return (le16_to_cpu(*(u16 *)&addr[offset]) & 0x7000) >> 12;
}

sparse报告的警告是:warning: cast to restricted __le16

有人能帮我理解这里出了什么问题吗?

我目前面临的另一个问题是下面这行:

代码语言:javascript
复制
__le16 values[20] = {0xf0, 0xfb, 0xf2, 0xf1};

Sparse给出以下警告:warning: incorrect type in initializer (different base types) expected restricted __le16 got int

另一个问题是:seq = cpu_to_le16(tmp_hdr->seq >> 4);

我得到的错误是:restricted __le16 degrades to integer

不确定如何解决此问题。

我如何纠正所有这些问题?

EN

回答 1

Stack Overflow用户

发布于 2014-03-02 05:19:08

对于第一期

(le16_to_cpu(*(__le16 *)&addr[offset]) & 0x7000) >> 12;

对于第二期

__le16 val[20] = {cpu_to_le16(0xf0), cpu_to_le16(0xfb)..}

对于第三期

u16 seq = (le16_to_cpu(tmp_hdr->seq) >> 4);

有关更多详细信息,请阅读此link

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22119935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档