Linux設備模型的目的是:為內核建立起一個統一的設備模型,從而有一個對系統結構的一般性抽象描述。 2.6 設備模型提供了這個抽象. 現在它用在內核來支持不同的任務, 包括 電源管理和系統關機:這些需要對系統結構的理解,設備模型使操作系統能以正確順序遍歷系統硬件。 與用戶空間的通訊 : sysfs 虛擬文件系統的實現被緊密地捆綁進設備模型, 并且暴露它所代表的結構. 關于系統到用戶空間的信息提供和改變操作參數的旋紐正越來越多地通過 sysfs及設備模型來完成. 可熱插拔設備:計算機硬件正更多地動態變化; 外設可因用戶的一時念頭而進出. 在內核中使用的來處理和(特別的)與用戶空間關于設備插入和拔出的通訊, 是由設備模型來管理 設備類別:系統的許多部分需要知道什么類型的設備可用. 設備模型包括一個機制來分配設備給類別, 它在一個更高的功能性的級別描述了這些設備, 并且允許它們從用戶空間被發現. 對象生命期:設備模型的實現需要創建一系列機制來處理對象的生命周期、對象間的關系和對象在用戶空間的表示。 sysfs初探 sysfs is a ram-based filesystem initiallybased on ramfs. It provides sysfs 是一個最初基于ramfs的位于內存的文件系統。它提供 a means to export kernel data structures,their attributes, and the 一些方法以導出內核的數據結構、他們的屬性和 linkages between them to userspace. 他們與用戶空間的連接。 sysfs is tied inherently to the kobjectinfrastructure. Please read sysfs 始終與kobject的底層結構緊密相關。請閱讀 Documentation/kobject.txt for moreinformation concerning the kobject Documentation/kobject.txt 文檔以獲得更多關于 kobject 接口的信息。 interface. 可以先把documentation/filesystems/sysfs.txt讀一遍。文檔這種東西,真正讀起來就嫌少了。 Sysfs文件系統是一個類似于proc文件系統的特殊文件系統,用于將系統中的設備組織成層次結構,并向用戶模式程序提供詳細的內核數據結構信息。 去/sys看一看, localhost:/sys#ls /sys/ block/ bus/ class/ devices/ firmware/kernel/ module/ power/ Block目錄:包含所有的塊設備 Devices目錄:包含系統所有的設備,并根據設備掛接的總線類型組織成層次結構 Bus目錄:包含系統中所有的總線類型 Drivers目錄:包括內核中所有已注冊的設備驅動程序 Class目錄:系統中的設備類型(如網卡設備,聲卡設備等) sys下面的目錄和文件反映了整臺機器的系統狀況。比如bus, localhost:/sys/bus#ls i2c/ ide/ pci/ pci express/ platform/ pnp/scsi/ serio/ usb/ 里面就包含了系統用到的一系列總線,比如pci, ide, scsi, usb等等。比如你可以在usb文件夾中發現你使用的U盤,USB鼠標的信息。 我們要討論一個文件系統,首先要知道這個文件系統的信息來源在哪里。所謂信息來源是指文件組織存放的地點。比如,我們掛載一個分區, mount -t vfat /dev/hda2 /mnt/C 我們就知道掛載在/mnt/C下的是一個vfat類型的文件系統,它的信息來源是在第一塊硬盤的第2個分區。深圳專業嵌入式實訓,郭老師QQ754634522 但是,你可能根本沒有去關心過sysfs的掛載過程,她是這樣被掛載的。 mount -t sysfs sysfs /sys 看不出她的信息來源在哪。sysfs是一個特殊文件系統,并沒有一個實際存放文件的介質。斷電后就玩完了。簡而言之,sysfs的信息來源是kobject層次結構,讀一個sysfs文件,就是動態的從kobject結構提取信息,生成文件。 |