【Linux-驱动】在sysfs下创建对应的class节点---class_create

在编写简单字符设备驱动的时候,可以使用宏class_create在sysfs下创建对应的class节点,便于用户管理设备:

#define class_create(owner, name)        \
({                        \
    static struct lock_class_key __key;    \
    __class_create(owner, name, &__key);    \
})

函数 __class_create:

/**
 * class_create - create a struct class structure
 * @owner: 这个class所属的模块
 * @name:  class的名称一般为设备名
 * @key:   对应的(struct lock_class_key)结构体指针
 */
struct class *__class_create(struct module *owner, const char *name,
                 struct lock_class_key *key)
{
    struct class *cls;
    int retval;

    cls = kzalloc(sizeof(*cls), GFP_KERNEL);
    if (!cls) {
        retval = -ENOMEM;
        goto error;
    }

    cls->name = name;
    cls->owner = owner;
    cls->class_release = class_create_release;

    retval = __class_register(cls, key);
    if (retval)
        goto error;

    return cls;

error:
    kfree(cls);
    return ERR_PTR(retval);
}

 

posted @ 2017-03-23 07:24  LinuxRookie  阅读(2701)  评论(0编辑  收藏  举报