kset_create_and_add函数
时间: 2024-01-16 08:04:57 浏览: 31
kset_create_and_add函数是Linux内核中的一个函数,用于创建一个kset对象并将其添加到父kobject对象下的子对象列表中。
该函数的原型为:
```
struct kset *kset_create_and_add(const char *name,
const struct kset_uevent_ops *uevent_ops,
struct kobject *parent_kobj);
```
参数说明:
- `name`:kset的名称,字符串类型。
- `uevent_ops`:指向kset_uevent_ops结构体的指针,包含kset对象的uevent操作。
- `parent_kobj`:指向父kobject对象的指针。
函数返回值为指向新创建的kset对象的指针。如果创建失败,返回NULL。
使用kset_create_and_add函数创建的kset对象可以通过`kset_unregister`函数从内核中删除。
相关问题
kset_register
`kset_register`是一个函数,用于在sysfs中注册一个新的kset对象。在Linux内核中,sysfs是一种虚拟文件系统,用于在用户空间中提供对内核数据结构的访问。kset是sysfs中的一个重要概念,表示一组相关的内核对象。kset可以包含多个kobject对象,并且可以通过sysfs中的相应目录来访问这些对象。
函数原型如下:
```
int kset_register(struct kset *kset);
```
其中,参数kset是指向要注册的kset对象的指针。函数返回0表示注册成功,否则表示注册失败。
在注册kset对象之前,需要先定义一个kset结构体,并调用`kobject_set_name`函数为其设置名称。然后可以将多个kobject对象添加到kset中,并在最后调用`kset_register`函数来注册kset对象。注册成功后,在sysfs中将创建一个与kset名称相同的目录,目录下的文件和目录将对应于kset中的kobject对象。通过sysfs中的相应文件和目录,可以在用户空间中访问和控制内核对象。
帮我注释一下下面代码: struct subsys_private { struct kset subsys; struct kset *devices_kset; struct list_head interfaces; struct mutex mutex; struct kset *drivers_kset; struct klist klist_devices; struct klist klist_drivers; struct blocking_notifier_head bus_notifier; unsigned int drivers_autoprobe:1; struct bus_type *bus; struct kset glue_dirs; struct class *class; };
// 以下是对结构体字段的注释:
// 该子系统对应的 kset(内核对象集合)
struct kset subsys;
// 设备所在的 kset(内核对象集合)
struct kset *devices_kset;
// 接口列表
struct list_head interfaces;
// 互斥锁
struct mutex mutex;
// 驱动程序所在的 kset(内核对象集合)
struct kset *drivers_kset;
// 设备的 klist(内核对象列表)
struct klist klist_devices;
// 驱动程序的 klist(内核对象列表)
struct klist klist_drivers;
// 总线事件通知的阻塞通知器
struct blocking_notifier_head bus_notifier;
// 是否自动探测驱动程序
unsigned int drivers_autoprobe:1;
// 总线类型
struct bus_type *bus;
// 粘合目录的 kset(内核对象集合)
struct kset glue_dirs;
// Linux 类别
struct class *class;