首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在我的iio_info结构中添加write_raw函数

如何在我的iio_info结构中添加write_raw函数
EN

Stack Overflow用户
提问于 2019-05-02 22:41:00
回答 1查看 284关注 1票数 0

我正在写一个使用iio框架的驱动程序。到目前为止一切都很顺利。所有的输入和sysfs条目都工作得很好,测量值也很好。(它有很好的文档,而且很容易)。但我需要一个小的扩展,以便能够在其中一个通道上进行写入。当我在iio_info中添加我的函数时,编译器会给我一个错误:

代码语言:javascript
复制
drivers/iio/adc/iio-ccuss.c:197:15: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types]
  .write_raw = ccuss_iio_write_raw,
               ^~~~~~~~~~~~~~~~~~~

这对我来说很奇怪。我甚至不敢相信我在这里厚颜无耻地问这个问题,但我非常沮丧。我几乎浪费了半天的时间。我的结构是:

代码语言:javascript
复制
static const struct iio_info ccuss_iio_info = {
    .driver_module = THIS_MODULE,
    .attrs = &ccuss_iio_attribute_group,
    .read_raw = ccuss_iio_read_raw,
    .write_raw = ccuss_iio_write_raw,
};

我的频道类型是IIO_VOLTAGE、IIO_TEMP和IIO_HUMIDITYRELATIVE。我开始考虑将其作为设备属性:-(如果我在接下来的12小时内没有收到答复。

更新:根据墨菲的评论,只是为了让人更容易看到。

代码语言:javascript
复制
static int ccuss_iio_write_raw(struct iio_dev *iio,
                        struct iio_chan_spec const *channel, int *val1,
                        int *val2, long mask);

附注:我不想以最知名的方式删除此错误。QA (和我)会不高兴的。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-03 19:18:38

根据referencewrite_raw()函数声明如下:

代码语言:javascript
复制
int (*write_raw)(
    struct iio_dev *indio_dev,
    struct iio_chan_spec const *chan,
    int val,
    int val2,
    long mask);

您的实现声明如下:

代码语言:javascript
复制
 static int ccuss_iio_write_raw(
     struct iio_dev *iio,
     struct iio_chan_spec const *channel,
     int *val1,
     int *val2,
     long mask);

因此,您将两个整数参数声明为指针,但它们应该是通过值传递的。我认为这是导致“指针类型不兼容”错误的不匹配。

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

https://stackoverflow.com/questions/55954854

复制
相关文章

相似问题

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