在塊裝置驅動程式分析之框架構建那一節裡面已經提到過
block_device_operations
這樣乙個結構體。顧名思義,它的作用就是來進行塊裝置的處理,對應的就是各種函式,但是並不對應塊裝置的讀寫處理函式,這是因為對塊裝置的讀寫在別的地方完成了,具體來說就是在request函式中被完成了,對於這個函式,我們今後會來分析的,現在先放一放。
在本節裡面我們要完成的功能是使塊裝置支援分割槽,對塊裝置的這種操作由函式
.getgeo來完成。這個函式是為一些沒有磁碟特性的塊裝置構造磁碟的一些屬性,**如下:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
static struct gendisk *ramblock_disk;
static request_queue_t *ramblock_queue;
static unsigned char *ramblock_buf;
static int major;
#define ramblock_size (1024*1024)
static define_spinlock(ramblock_lock);
static int ramblock_getgeo(struct block_device *bdev, struct hd_geometry *geo)
static struct block_device_operations ramblock_fops = ;
#define ramblock_size (1024*1024)
static void do_ramblock_request(request_queue_t * q)
else
end_request(req, 1); }
} static int ramblock_init(void)
static void ramblock_exit(void)
module_init(ramblock_init);
module_exit(ramblock_exit);
module_license("gpl");
測試:
(1) insmod ramblock.ko
(2) ls /dev/ramblock* 資訊如下:brw-rw---- 1 0 0 254, 0 jan 1 02:26 /dev/ramblock
(3)分割槽:fdisk /dev/ramblock
輸入:m 可以檢視幫助資訊
輸入:n 用於建立新的分割槽
輸入:p 用於建立主分割槽
然後根據提示可以建立分割槽。
塊裝置驅動程式分析之記憶體模擬磁碟
include include include include include include include include include include include include include include include include include include includ...
塊裝置驅動之NAND FLASH驅動程式
一.框架總結 二.硬體原理 相比於nor flash。我們能夠清楚的看出引腳少了非常多,主要是輸入輸出引腳進行了復用。如今我說下各引腳的用途。a.ldata0 ldata7這8個引腳為輸入輸出引腳。命令 位址 資料的傳輸都是由這8個引腳實現的 引腳復用,節約引腳 b.rnb 此引腳用來判忙。由於命令...
基於記憶體對映的裝置驅動程式
通過新增核心模組實現乙個基於記憶體對映的雜項裝置驅動程式。拓展 該模組只實現了顯示記憶體對映區域資訊的功能,而且該資訊是固定 拓展部分實現了將當前程序在記憶體對映後的vma區域的資訊顯示出來。編譯時 make sudo insmod miscdev map.ko sudo chmod a rw de...