sysfs是一個基于ramfs的文件系統(tǒng),在2.6內(nèi)核開始引入,用來導(dǎo)出內(nèi)核對象(kernel object)的數(shù)據(jù)、屬性到用戶空間。與同樣用于查看內(nèi)核數(shù)據(jù)的proc不同,sysfs只關(guān)心具有層次結(jié)構(gòu)的設(shè)備信息,比如系統(tǒng)中的總線,驅(qū)動以及已經(jīng)加載的模塊等,而諸如PID等信息還是使用proc來管理。本質(zhì)上,sysfs文件的層次結(jié)構(gòu)就是基于內(nèi)核中kset與kobject邏輯結(jié)構(gòu)來組織的。從驅(qū)動開發(fā)的角度,sysfs為我們提供了除了虛擬字符設(shè)備的read/write/ioctlproc系統(tǒng)之外的另外一種通過用戶空間訪問內(nèi)核數(shù)據(jù)的方式。想要使用sysfs,編譯內(nèi)核的時候需要定義CONFIG_SYSFS,可以通過mount -t sysfs sysfs /sys命令來掛載sysfs到"/sys"目錄。本文以ubuntu15.04(3.19)為例分析。

sysfs目錄結(jié)構(gòu)

sysfs的布局體現(xiàn)內(nèi)核的數(shù)據(jù)結(jié)構(gòu),頂層的目錄有

$ls /sys/block/  bus/  class/  dev/  devices/  firmware/  fs/  hypervisor/  kernel/  module/  power/

每一個目錄都對應(yīng)內(nèi)核中的一個kset,每一個kset還會包含一些kobject或其他kset。下面針對常用目錄做一個簡單的介紹

/sys/block/

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負責(zé)任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式