sysfs

太難了吧,看着看着就暈了,仍是一個一個地仔細研究一下再寫大做業吧java

0x01 定義(參考書本)數組

表示系統中設備樹的一個文件系統
spa

0x02 前置知識(kobject,kset)指針

kobject對象

內核中有一個統一設備模型,提供了一個獨立的機制專門來表示設備,並描述其在系統中的拓撲結構。設備模型的核心部分就是kobject,相似於java中的對象類,提供了諸如引用計數、名稱和父指針等字段能夠建立對象的層次結構
blog

kobject一般是嵌入其餘結構的,單獨意義其實不大,例如cdev結構體中用到的kobject
容器

這樣子理解的話就是一個通用的對象結構體,咱們在建立咱們須要的對象的結構體時候,其結構體中會嵌入該kpbject結構體,從而能夠擁有引用計數等那些功能
變量

ktype
object

描述kobject所具備的廣泛特性,對應的結構體爲kobj_type結構體
引用

 

 sysfs_ops變量指向sysfs_ops結構體,該結構體描述了sysfs文件讀寫時的特性;default_attrs指向一個attribute結構體數組,該結構體定義了該kobject相關默認屬性

kset

kset是kobject對象的集合體。把它當作是一個容器,將全部相關的kobject對象置於同一位置

0x03 sysfs具體解釋

是一個虛擬文件系統,爲咱們提供了kobject對象層次結構視圖,將kobject對象和目錄項緊密聯繫起來(kobject對象中的dentry(目錄項結構體)實現的),將kobject映射到某目錄上

我的理解,sysfs實際上就是目錄結構圖???每一個目錄又對應的是一個kobject,sysfs僅僅是一顆樹,不提供任何實際數據的文件。

全部具備相同類型的kobject在它們對應的sysfs目錄下擁有相同的默認文件集合,屬性文件

 

 

 

 當從用戶空間讀取sysfs的項時調用show()方法,拷貝由sttr提供的屬性值到buffer指定的緩衝區中,緩衝區大小爲PAGE_SIZE字節;store()方法在寫操做時調用,它會從buffer中讀取size大小字節,將其放入attr表示的屬性結構體變量中。

相關文章
相關標籤/搜索