device_register如何指定class
时间: 2023-06-27 14:04:46 浏览: 65
在设备驱动程序中,可以使用`platform_device_register()`函数来注册一个平台设备并指定其`class`。该函数的第二个参数是一个指向`platform_device`结构体的指针,该结构体包含了设备的信息,其中一个成员是`dev`,可以通过该成员来指定设备的`class`。
例如,以下代码注册了一个名为`my_device`的平台设备,并将其`class`设置为`my_class`:
```
static struct platform_device my_device = {
.name = "my_device",
.id = -1,
.dev = {
.class = &my_class,
},
};
int my_driver_probe(struct platform_device *pdev)
{
// do driver initialization here
}
static int __init my_driver_init(void)
{
platform_device_register(&my_device);
platform_driver_register(&my_driver);
return 0;
}
static void __exit my_driver_exit(void)
{
platform_driver_unregister(&my_driver);
platform_device_unregister(&my_device);
}
module_init(my_driver_init);
module_exit(my_driver_exit);
```
其中,`my_class`是一个指向设备所属类的指针,可以通过`class_create()`函数创建。例如:
```
static struct class *my_class;
static int __init my_driver_init(void)
{
my_class = class_create(THIS_MODULE, "my_class");
if (IS_ERR(my_class))
return PTR_ERR(my_class);
platform_device_register(&my_device);
platform_driver_register(&my_driver);
return 0;
}
static void __exit my_driver_exit(void)
{
platform_driver_unregister(&my_driver);
platform_device_unregister(&my_device);
class_destroy(my_class);
}
module_init(my_driver_init);
module_exit(my_driver_exit);
```
这样就可以在`/sys/class/my_class/`路径下找到`my_device`设备的相关信息了。