對於各種塊裝置,核心使用了一張塊裝置表blk_dev來進行管理。每種塊裝置都在塊裝置表中佔據一項。
塊裝置表中每個塊裝置項的資料結構為:
// 塊裝置處理結構。
struct blk_dev_struct
// 下面是請求佇列中項的結構。其中如果欄位dev = -1,則表示佇列中該項沒有被使用。
// 欄位cmd可取常量read(0)或write(1)(定義在include/linux/fs.h中)。
// 其中,核心並沒有用到waiting指標,起而代之地核心使用了緩衝塊的等待佇列。因為
// 等待乙個緩衝塊與等待請求項完成是對等的。
struct request ;
linux 塊裝置驅動(二) 塊裝置資料結構
本文 於 1.塊裝置相關的資料結構以及介面 塊裝置介面則相對複雜,讀寫api沒有直接到塊裝置層,而是直接到檔案系統層,然後再由檔案系統層發起讀寫請求。一 block device block device結構代表了核心中的乙個塊裝置。它可以表示整個磁碟或乙個特定的分割槽。當這個結構代表乙個分割槽時,...
Linux裝置模型基礎 資料結構
structkobject 屬性相關的成員變數 name 名稱 kref 引用計數,用於統計系統中引用該物件的次數。structkref 看似多此一舉,實際上是為了防止使用者直接操作refcount。用struct kref進行封裝後,使用者須通過固定的介面來操作。如 voidkref set st...
Linux塊裝置驅動(一)gendisk結構體
linux核心中,用gendisk結構體表示乙個磁碟裝置或分割槽,塊裝置驅動程式的設計主要就是圍繞gendisk這個資料結構展開的。乙個簡單的塊裝置驅動程式框架如下 在init函式中分配 設定 新增乙個gendisk 設計gendisk結構體fops成員包含的操作函式 設計gendisk結構體que...