精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux configfs的內部機制介紹

麥辣雞腿堡 ? 來源:嵌入式Linux系統開發 ? 作者:嵌入式Linux系統開 ? 2023-07-13 11:00 ? 次閱讀

2.1 configfs 和 sysfs
configfs 和 sysfs 都是基于內存的虛擬文件系統,但是它們并不相同。

對于 sysfs,當內核創建某個對象時,比如注冊一個 platform_drvier 時,它就會被注冊進 sysfs 里。它的屬性就會在 sysfs
中出現:用戶程序可以通過 readdir、read 函數讀取這些屬性,也可以通過 write 函數修改某些屬性。重點在于:sysfs
中的內容是在內核里創建、銷毀,內核控制著 sysfs 的生命周期。可以認為 sysfs 就是這些內核對象的觀察窗口。

對于 configfs,當然也需要內核驅動程序的支撐。但是操作 configfs 的啟動是用戶程序:用戶執行 mkdir
時會在內核里創建一個config_item 對象,用戶執行 rmdir 時會銷毀這個內核對象。當執行 mkdir 創建目錄時,這個 config_item
的屬性就會出現在這個目錄下。用戶程序可以執行 read、write 操作讀寫這些屬性。與 sysfs 的不同在于:configfs
中目錄、文件的生命周期由用戶程序決定。

2.2 重要結構體

掛載 configfs 文件系統后,在里面創建/刪除目錄、讀寫文件、建立鏈接文件,都會導致內核中相關函數被調用。

站在用戶的角度來說,一個文件系統里面有目錄、文件兩種對象。在 configfs 的內核實現中,對應 4 個概念。從底往上看:

configfs_attribute、configfs_bin_attribute:對應文件

configfs_attribute 對應的文件里含有的是可視化的字符串信息,它在內核里有一個結構體:

struct configfs_attribute { char *ca_name; struct module *ca_owner; umode_t
ca_mode; ssize_t (*show)(struct config_item *, char *); ssize_t (*store)(struct
config_item *, const char *, size_t); };

configfs_bin_attribute 對應的文件里含有的是二進制信息,它在內核里有一個結構體:

struct configfs_bin_attribute { struct configfs_attribute cb_attr; /* std.
attribute */ void cb_private; / for user / size_t cb_max_size; / max core
size */ ssize_t (*read)(struct config_item *, void *, size_t); ssize_t
(*write)(struct config_item *, const void *, size_t);};

讀寫文件時,會導致上述結構體里的 show/store 或者 read/write 函數被調用

文件是位于某個目錄的: config_item

config_item:configfs 中的每個對象都是 config_item,后面的 config_group、subsystem
本質上都屬于特殊的 config_item

config_group、subsystem,config_item 都對應一個目錄

跟 config_group、subsystem 對比時,config_item 這個目錄下不再有目錄

在 config_item 目錄下有屬性文件,還可以創建鏈接文件

鏈接文件的操作結構體是:config_item_type 里的 configs_item_operations

圖片

config_group:它是特殊的 config_item,它有對應一個目錄

普通的 config_item:下面不再有子目錄

config_group:下面還可以創建 config_item 或者 config_group,即:下面可以再創建子目錄

在當前目錄下操作子目錄時,對應的操作結構體是:config_item_type 里的 configs_group_operations

圖片

subsystem:它是 configfs 文件系中的最頂層

比如:/sys/kernel/config/usb_gadget、/sys/kernel/config/iio

在driversusbgadgetconfigfs.c中調用configfs_register_subsystem(&gadget_subsys)就會創建
subsystem,它對應 configfs 文件系統中的頂層目錄usb_gadget

subsystem 也屬于 config_group

圖片

2.3 configfs 使用流程

跟 legacy 方法類比,要做的事情是一樣的:

創建 usb_composite_dev

設置設備描述符

設置配置描述符

添加接口(功能)

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5068

    文章

    19019

    瀏覽量

    303301
  • Linux
    +關注

    關注

    87

    文章

    11229

    瀏覽量

    208931
  • 函數
    +關注

    關注

    3

    文章

    4306

    瀏覽量

    62431
收藏 人收藏

    評論

    相關推薦

    Linux系統安全機制及技術大觀

    Linux 系統是開放的, 其上安全機制、工具很多,不同的場景其安全目標和選擇的工具都不相同。以下從個人角度仿ATT&CK列出一些常見的安全機制和技術。
    發表于 05-19 10:59 ?2901次閱讀
    <b class='flag-5'>Linux</b>系統安全<b class='flag-5'>機制</b>及技術大觀

    Linux 機制分析

    走入 Linux 的殿堂已經有一年有余了,在這里我想將 Linux 的各種實現機制分析一遍,一方面對自己來說也是溫故而知新,另一方面,促進大家的交流,最好能夠給大家一些拋磚引玉的啟迪。我是硬件出身
    發表于 05-21 09:51

    結構型吸波機制介紹

    上一篇文章,我們介紹了吸波材料的損耗型吸波機制,這類型的吸波材料通常需要控制內部損耗介質的類型及結構問題。在這一篇我們講述結構型吸波機制。結構型吸波材料主要是依靠相消原理【1】來吸收電
    發表于 07-01 07:25

    Linux串口通信的超時機制

    Linux下使用串口通信時,默認的阻塞模式是不實用的。而采用select或epoll機制的非阻塞模式,寫代碼有比較麻煩。幸好Linux的串口自己就帶有超時機制
    發表于 07-05 08:38

    詳解Linux內核搶占實現機制

    本文詳解了Linux內核搶占實現機制。首先介紹了內核搶占和用戶搶占的概念和區別,接著分析了不可搶占內核的特點及實時系統中實現內核搶占的必要性。然后分析了禁止內核搶占的情況和內核搶占的時機,最后
    發表于 08-06 06:16

    詳解Linux能力機制

    Linux能力機制
    發表于 04-20 08:23

    INtime RTOS內部的關鍵處理機制是什么

    INtime RTOS內部的關鍵處理機制是什么?INtime RTOS內部的關鍵處理機制有哪些相關的應用案例?
    發表于 09-29 06:28

    Linux與VxWorks任務調度機制分析

    Linux與VxWorks任務調度機制分析
    發表于 03-28 09:52 ?19次下載

    linux內存管理機制淺析

    本內容介紹了arm linux內存管理機制,詳細說明了linux內核內存管理,linux虛擬內存管理,arm
    發表于 12-19 14:09 ?73次下載
    <b class='flag-5'>linux</b>內存管理<b class='flag-5'>機制</b>淺析

    Linux系統的fork運行機制分析

    如果其中一個進程的輸出結果是“pid1:1001, pid2:1002”,寫出其他進程的輸出結果(不考慮進程執行順序)。 明顯這道題的目的是考察linux下fork的執行機制。下面我們通過分析這個題目,談談Linux下fork
    發表于 04-26 16:26 ?1155次閱讀
    <b class='flag-5'>Linux</b>系統的fork運行<b class='flag-5'>機制</b>分析

    Linux的notifier機制在TP中的應用

    linux內核系統中,各個模塊、子系統之間是相互獨立的。Linux內核可以通過通知鏈機制來獲取由其它模塊或子系統產生的它感興趣的某些事件。
    發表于 05-05 11:46 ?2203次閱讀

    Linux內核驅動的platform機制是怎樣的

    Linux 2.6起引入了一套新的驅動管理和注冊機制:platform_device和platform_driver。
    發表于 11-06 14:12 ?1608次閱讀
    <b class='flag-5'>Linux</b>內核驅動的platform<b class='flag-5'>機制</b>是怎樣的

    面向Linux系統的系統數據容災機制綜述

    面向Linux系統的系統數據容災機制綜述
    發表于 06-27 14:29 ?8次下載

    Linux內核文件Cache機制

    Linux內核文件Cache機制(開關電源技術與設計 第二版)-Linux內核文件Cache機制? ? ? ? ? ? ? ??
    發表于 08-31 16:34 ?4次下載
    <b class='flag-5'>Linux</b>內核文件Cache<b class='flag-5'>機制</b>

    Linux configfs的使用

    1. 體驗 1.1 使用 所有命令都是在開發板上執行。 掛載 configfs 文件系統 # modprobe libcomposite# mount -t configfs none /sys
    的頭像 發表于 07-13 10:59 ?1071次閱讀