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

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

/sys/block/

延伸閱讀

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