首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >导致类属性内循环的kstrtol

导致类属性内循环的kstrtol
EN

Stack Overflow用户
提问于 2020-07-24 01:58:28
回答 1查看 83关注 0票数 0

我有一个简单的内核模块,它在/sys/class下创建sysfs节点,并向类添加一个测试属性。test属性有一个存储函数,它只使用kstrtol将驻留在字符数组中的数字转换为long。它似乎工作得很好;但是,函数似乎陷入了一个无限循环中。我对为什么感到非常困惑。有人有什么想法吗?

代码语言:javascript
运行
复制
static ssize_t test_store(struct class *c,
    struct class_attribute *attr,
    const char *buf,
    size_t count)
{
    int ret;
    long test;

    char testbuf[10] = "10\0";

    ret = kstrtol(testbuf, 10, &test);

    printk("Read test number%d", test);

    if (ret)
        return ret;

    return 0;
}

static CLASS_ATTR_WO(test);

终端输出:

代码语言:javascript
运行
复制
 echo 10 > /sys/class/vehicle_control/test
[   57.633697] Creating vehicle_control sysfs node
[   60.270140] Read test number10
[   60.273221] Read test number10
[   60.279476] Read test number10
[   60.281071] Read test number10
[   60.284113] Read test number10
[   60.289285] Read test number10
[   60.290879] Read test number10
[   60.293921] Read test number10
[   60.299085] Read test number10
[   60.300678] Read test number10
[   60.303720] Read test number10
[   60.308967] Read test number10
[   60.310560] Read test number10
[   60.313601] Read test number10
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-24 12:33:06

来自文档

store()应该返回缓冲区中使用的字节数。如果使用了整个缓冲区,只需返回count参数即可。

因此,在您的情况下,您可以编写return count;

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

https://stackoverflow.com/questions/63065643

复制
相关文章

相似问题

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