1、塊裝置驅動程式的引入
對於塊裝置,不能像字元裝置那樣直接提供讀寫函式
假設: 寫扇區0和扇區1
原先是這樣寫扇區0:
a.讀出整塊到buffer
b.修改buffer裡的扇區0
c.擦除整塊
d.燒寫整塊
原先是這樣寫扇區1:
a.讀出整塊到buffer
b.修改buffer裡的扇區1
c.擦除整塊
d.燒寫整塊
優化後是這樣寫扇區0/1
1. 讀出整塊
2. 修改兩個扇區(0和1)
3. 擦除整塊
4. 燒寫整塊
宗旨就是: 先不執行,放入佇列,優化後再執行
3、塊裝置驅動程式的編寫步驟
a. 使用alloc_disk分配gendisk結構體
b. 設定gendisk
b.1 blk_init_queue(分配/設定)佇列request_queue_t
b.2 設定gendisk其他資訊 // 它提供屬性: 如容量
c. 註冊: add_disk
4、塊裝置的使用步驟
a. 分割槽 b. 格式化 c. 掛載
硬碟與u盤:a. fdisk 裝置節點 b.mkfs.*** 裝置節點 c.mount
flash:a.分割槽 在驅動程式中宣告 b.格式化是在製作映象的時候進行格式化,並在u-boot的引數中進行宣告。擦除和寫入操作是mtd_util的flash_eraseall和flash_cp,針對的是/dev/mtdx c.mount
5、sync會讓當前的塊裝置寫入操作馬上生效
裝置驅動 塊裝置驅動程式
塊裝置驅動程式提供對面向塊的裝置的訪問,這種裝置以隨機訪問的方式傳輸資料,並且資料總是具有固定大小的塊。典型的塊裝置是磁碟驅動器,也有其它型別的塊裝置。塊裝置和字元裝置有很大區別。比如塊裝置上可以掛載檔案系統,字元裝置不可以。這是隨機訪問帶來的優勢,因為檔案系統需要能按塊儲存資料,同時更需要能隨機讀...
塊裝置驅動程式
裝置描述 定義於linux genhd.h struct gendisk 裝置註冊 void add disk struct gendisk gd 裝置操作 字元裝置通過file operations結構來定義它所支援的操作。塊裝置通過struct block device operations結構...
塊裝置驅動程式
塊裝置驅動程式 1 塊裝置和字元裝置的區別 1,讀取資料的單元不同,塊裝置讀寫資料的基本單元式塊,字元裝置的基本單元是位元組。2,塊裝置可以隨機訪問,字元裝置只能順序訪問。2 linux核心中塊裝置的描述 struct gendisk 裝置操作 struct block device operati...