首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向现有的kobject添加属性

向现有的kobject添加属性
EN

Stack Overflow用户
提问于 2015-08-19 17:57:25
回答 1查看 1.1K关注 0票数 0

我正在将我为2.6.x内核系列编写的驱动程序移植到3.x (即RH EL 6 -> RH 7)。我的驱动程序解决方案实际上有两个模块:修改后的ahci.c (来自内核树)和我自己的上层字符驱动程序,用于访问AHCI寄存器,甚至对驱动器执行命令。

在移植到CentOS 7时,我遇到了一个有趣的问题。更改我正在构建的驱动程序,删除对SYSFS中scsi_host属性的访问。那么,我的问题是,我是否可以将属性附加到SYSFS中已经存在的设备上?我遇到的每个示例都显示了在设备创建时生成属性,例如:

代码语言:javascript
运行
复制
static ssize_t port_show(struct kobject *kobj, struct kobj_attribute *attr,
                         char *buff);
static struct kobj_attribute pxclb_attr = __ATTR(pxclb, 0664, port_show, NULL);
static struct attribute *attrs[] = {
    &pxclb_attr.attr,
    NULL,
};

static struct attribute_group port_group = {
    .attrs = attrs,
};

/* much other code */

sysfs_create_group(&kobj, &port_group);

这个例子来自我的角色驱动程序。我用Google完成的所有搜索,以及引用我的Linux驱动程序类本,都显示了在设备创建时完成的属性创建。我可以在任何时候加进去吗?似乎随时都可以打电话给sysfs_create_group()。这是真的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-21 06:10:16

您可以随时在sysfs中添加attribute

几乎所有驱动程序都在attribute中添加probe的原因是用户空间对何时创建属性有严格的期望。当在内核中注册新设备时,生成一个uevent通知用户空间(如udev)新设备可用。如果在设备注册后添加了属性,那么用户空间将不会得到通知,并且用户空间将不知道新的属性。

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

https://stackoverflow.com/questions/32102461

复制
相关文章

相似问题

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