leds_class创建过程

 本文记录leds_class的创建过程:

 

1.
static int __init leds_init(void)
{
	leds_class = class_create(THIS_MODULE, "leds");
        
        ...
}

2.
/**
 * class_create - create a struct class structure
 * @owner: pointer to the module that is to "own" this struct class
 * @name: pointer to a string for the name of this class.
 *
 * This is used to create a struct class pointer that can then be used
 * in calls to class_device_create().
 *
 * Note, the pointer created here is to be destroyed when finished by
 * making a call to class_destroy().
 */
struct class *class_create(struct module *owner, const char *name)
{
	struct class *cls;
	...

	cls = kzalloc(sizeof(*cls), GFP_KERNEL);
	...

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

	retval = class_register(cls);
	...

	return cls;
        ...
}

3.
int class_register(struct class * cls)
{
	...

	error = kobject_set_name(&cls->subsys.kobj, "%s", cls->name);
	...

	subsys_set_kset(cls, class_subsys);

	error = subsystem_register(&cls->subsys);
	...

	return error;
}

 leds_class指针及class_subsys之间的关联示意:

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值