linux 将属性组分配给默认属性组时,属性组不存在

dw1jzc5e  于 5个月前  发布在  Linux
关注(0)|答案(1)|浏览(53)

按照this教程,我假设我可以简单地将我的属性组分配给默认属性组,如下所示:

static DEVICE_ATTR_RO(status);
static struct attribute *my_dev_attrs[] = {
    &dev_attr_status.attr,
    NULL
};
ATTRIBUTE_GROUPS(my_dev);

static int probe(struct spi_device *spi) {
    ...
    spi->dev.groups = my_dev_groups;
    ...
}

字符串
但是在/sys/bus/spi/drivers/my_dev/spi2.0处没有文件出现。然而,当我这样定义属性时:

int ret
ret = sysfs_create_group(&spi->dev.kobj, &my_dev_group);
if (ret < 0)
    return ret;


我可以看到并正确访问/sys/bus/spi/drivers/my_dev/spi2.0上的文件。第一个选项是否需要进一步设置?

093gszye

093gszye1#

struct device.groups字段不应该被直接使用或分配。背后的想法是提供静态属性组,并通过相应struct driver.dev_groups成员分配它们。例如,请参见以下代码。
完成这些之后,驱动核心将以非活泼的方式创建和删除它们(这就是为什么该字段出现在开始)。

相关问题