configfs 数据结构

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

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
configfs是用于在Linux内核中创建和管理虚拟文件系统的工具。通过configfs,我们可以使用用户态工具创建虚拟目录及文件,并将其与内核中的驱动程序或功能模块关联起来。 configfs gadget是configfs的一个特性,它允许我们将一个设备模拟为USB gadget,从而实现与主机之间的通信。gadget是指在USB架构中,作为"设备"的一方。使用configfs gadget,我们可以模拟出各种不同类型的USB设备,例如存储设备、网络设备、音频设备等。 为了使用configfs gadget,我们需要编写一些驱动程序以及相应的功能模块,并将其注册到内核中。然后,我们可以通过configfs提供的API,在用户态下创建虚拟文件系统,并将这些驱动程序和功能模块与相应的目录和文件关联起来。这样,当主机连接到模拟的USB gadget时,内核通过configfs可以将对应的驱动程序和功能模块加载并启动,从而实现设备的模拟和通信。 使用configfs gadget的好处是可以快速方便地模拟各种类型的USB设备,方便开发和测试。同时,它也提供了灵活的接口,可以根据需要调整设备的功能和行为。此外,与传统的编写驱动程序并重新编译内核相比,configfs gadget的使用方式更加简洁和灵活。 总之,configfs gadget是一种使用configfs工具在Linux内核中创建和管理虚拟USB设备的方法,它可以快速方便地模拟各种类型的USB设备,并提供灵活的接口进行相关调整和测试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值