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; // 访问权限
};