您的位置:首页 > 其它

在/sys/中创建设备子设备目录

2016-05-17 14:03 309 查看
在drivers/base下的platform.c中:
struct device platform_bus = {
.init_name = "platform",
};

注意它是一个struct device结构类型,它是所有设备的根目录。
这是在s5p4418中display.c中的一段代码:

struct kobject *kobj = NULL;
/* create attribute interface */
kobj = kobject_create_and_add("display", &platform_bus.kobj); //在/sys/devices/platform中添加一个设备目录
if (! kobj) {
printk(KERN_ERR "Fail, create kobject for display\n");
return -ret;
}

ret = sysfs_create_group(kobj, &attr_group); //为设备添加属性。
再来看lib/kobject.c中的kobject_create_and_add定义:struct kobject *kobject_create_and_add(const char *name, struct kobject *parent)
{
struct kobject *kobj;
int retval;

kobj = kobject_create();
if (!kobj)
return NULL;

retval = kobject_add(kobj, parent, "%s", name);
if (retval) {
printk(KERN_WARNING "%s: kobject_add error: %d\n",
__func__, retval);
kobject_put(kobj);
kobj = NULL;
}
return kobj;
}
EXPORT_SYMBOL_GPL(kobject_create_and_add);

它的第1个参数是要建的目录的名称,第2个参数是父目录的kobject对象(这意为着不光可以在/sys/devices/platform下创建,还可以在任意目录下创建)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: