configfs 数据结构

本文详细解释了Linux内核中的ConfigFS子系统结构,涉及structconfigfs_subsystem、config_group、config_item等关键结构,以及目录与属性的操作方法,展示了如何在系统中管理配置数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. configfs子系统
struct configfs_subsystem {
    struct config_group    su_group;    // 抽象容器,容器中可以包括config_item,还可以递归包含config_group
    struct mutex          su_mutex;     // 用于子系统访问控制
};

2.抽象容器
/**
 *    group - a group of config_items of a specific type, belonging
 *    to a specific subsystem.
 */
struct config_group {
    struct config_item          cg_item;         // 表现为一个目录
    struct list_head          cg_children;
    struct configfs_subsystem      *cg_subsys;
    struct config_group          **default_groups;
};

3. 目录
struct config_item {
    char              *ci_name;
    char              ci_namebuf[CONFIGFS_ITEM_NAME_LEN];         // 目录名称
    struct kref          ci_kref;                                  
    struct list_head    ci_entry;
    struct config_item    *ci_parent;
    struct config_group    *ci_group;                             
    struct config_item_type    *ci_type;                          // 目录下属性和属性操作,属性表现为目录下的文本文件
    struct dentry          *ci_dentry;
};

4. 目录与属性操作方法。
struct config_item_type {
    struct module                    *ct_owner;
    struct configfs_item_operations          *ct_item_ops;        // 属性操作方法,操作对象是configfs_attribute
    struct configfs_group_operations    *ct_group_ops;            //目录操作方法,可以在当前目录下创建item或group
    struct configfs_attribute          **ct_attrs;                // 当前目录属性数组
};

5.属性
struct configfs_attribute {
    const char          *ca_name;          // 属性名称
    struct module          *ca_owner;      // 所属模块
    umode_t              ca_mode;          // 访问权限
};

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值