我們在本章中要考察最后的設備模型概念是類.一個類是一個設備的高級視圖, 它抽象出 低級的實現細節. 驅動可以見到一個 SCSI 磁盤或者一個 ATA 磁盤, 在類的級別, 它們都 是磁盤. 類允許用戶空間基於它們做什么來使用設備, 而不是它們如何被連接或者它們如 何工作.
幾乎所有的類都在 sysfs 中在 /sys/class 下出現. 因此, 例如, 所有的網絡接口可在
/sys/class/net 下發現, 不管接口類型. 輸入設備可在 /sys/class/input 下, 以及串 行設備在 /sys/class/tty. 一個例外是塊設備, 由於歷史的原因在 /sys/block.
類成員關系常常由高級的代碼處理, 不必要驅動的明確的支持. 當 sbull 驅動( 見 16 章) 創建一個虛擬磁盤設備, 它自動出現在 /sys/block. snull 網絡驅動(見 17 章)沒 有做任何特殊事情給它的接口在 /sys/class/net 中出現. 將有多次, 但是, 當驅動結束 直接處理類.
在許多情況, 類子系統是最好的輸出信息到用戶空間的方法. 當一個子系統創建一個類, 它完全擁有這個類, 因此沒有必要擔心哪個模塊擁有那里發現的屬性. 它也用極少的時間 徘徊於更加面向硬件的 sysfs 部分來了解, 它不是一個直接瀏覽的好地方. 用戶會更加 高興地在 /sys/class/some-widget 中發現信息, 而不是,
/sys/device/pci0000:00/0000:00:10.0/usb2/2-0:1.0.
驅動核心輸出 2 個清晰的接口來管理類. class_simple 函數設計來盡可能容易地添加新 類到系統. 它們的主要目的, 常常, 是暴露包含設備號的屬性來使能設備節點的自動創建. 常用的類接口更加復雜但是同時提供更多特性. 我們從簡單版本開始.
