我有一个简单的内核模块,它在/sys/class下创建sysfs节点,并向类添加一个测试属性。test属性有一个存储函数,它只使用kstrtol将驻留在字符数组中的数字转换为long。它似乎工作得很好;但是,函数似乎陷入了一个无限循环中。我对为什么感到非常困惑。有人有什么想法吗?
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);
终端输出:
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
发布于 2020-07-24 12:33:06
https://stackoverflow.com/questions/63065643
复制相似问题