• configfs介绍


    一、configfs 简介

    configfs 是一个基于内存(ram-based)的文件系统

    二、configfs 和 sysfs 相比

    sysfs 是以文件系统的方式呈现内核对象。

    configfs 是以文件系统为手段管理内核对象或 config_items。

    sysfs 所要呈现的对象在内核中创建(例如,在发现一个新设备时),并使用 sysfs 进行注册。注册后,对象的属性出现在 sysfs 下面,用户空间可以使用 readdir/ 读取属性内容,允许的情况下也可以使用 write 修改属性内容。关键点是:对象的创建和销毁都在内核里完成,其生命周期由内核控制,sysfs 仅仅是呈现这些的方式。

    configfs 的 config_item 创建通过用户空间的 mkdir 操作实现,销毁使用 rmdir。mkdir 执行后,属性项也随之出现,后续使用 read/write 修改它们。和 sysfs 相同的是,configfs 同样可以使用 readdir 查询各个属性项,还可以使用 symlink 把一些属性组和起来;不同的是,configfs 的生命周期完全由用户空间控制。属性项背后的内核模块必须响应相应的操作。

    sysfs 和 configfs 能够而且也应该在同一个系统上同时存在;并不存在谁替代谁的问题。

    三、configfs 示例

    3.1 功能简介

    • 设备有一个USB接口,该USB支持adb功能UVC功能,但同时只能使能一个
    • 默认是adb功能
    • adb功能和UVC功能通过 configfs 进行配置

    3.2 配置实例

    设备上电:

    # ls /sys/kernel/config/
    usb_gadget <-- configfs 已经挂载
    # ls /sys/kernel/config/usb_gadget/
    adb_demo <-- 当前功能:adb
    # /etc/init.d/S90adb stop <-- 通知adb功能
    [ 40.611471] configfs-gadget gadget: unbind function 'Function FS Gadget'/84990c24
    
    # ls /sys/kernel/config/
    #
    # mount -t configfs none /sys/kernel/config <-- 挂载 configfs
    # ls /sys/kernel/config/
    usb_gadget
    # ls /sys/kernel/config/usb_gadget/
    #
    #
    # mkdir /sys/kernel/config/usb_gadget/uvc_demo <-- 使能UVC功能
    # ls /sys/kernel/config/usb_gadget/
    uvc_demo <-- 启用成功
    # ls /sys/kernel/config/usb_gadget/uvc_demo/ <-- 内核生成的UVC配置文件
    UDC bMaxPacketSize0 functions strings
    bDeviceClass bcdDevice idProduct
    bDeviceProtocol bcdUSB idVendor
    bDeviceSubClass configs os_desc
    

    后续即通过读写这些配置文件,对UVC进行配置。

  • 相关阅读:
    静水流深,沧笙踏歌
    iOS 进阶 第二十二天(0603)
    iOS 进阶 第二十一天(0531)
    iOS 进阶 第二十天(0520)
    iOS 进阶 第十九天(0423)
    iOS 进阶 第十八天(0423)
    iOS 进阶 第十七天(0420)
    iOS 进阶 第十六天(0419)
    iOS 进阶 第十五天(0417)
    iOS 进阶 第十四天(0416)
  • 原文地址:https://www.cnblogs.com/rockyching2009/p/15748015.html
Copyright © 2020-2023  润新知