讀書筆記:寫一個塊設備驅(qū)動(1)

這個是對CU上OstrichFly的“寫一個塊設備驅(qū)動“文章的讀書筆記站宗。

首先建立一個”常規(guī)”的塊驅(qū)動程序: ? ? ? ? ? ? ? ? ? ?

為設備申請一塊連續(xù)的內(nèi)存窘问,作為磁盤:

unsigned char simp_blkdev_data[SIMP_BLKDEV_BYTES]; /* 16*1024*1024 */

創(chuàng)建一個塊設備:

struct gendisk *alloc_disk(int minors); /*minors是該磁盤使用的次設備號的數(shù)目*/

simp_blkdev_disk = alloc_disk(1);

初始化請求隊列:

struct request_queue *blk_init_queue(request_fn_proc *, spinlock_t *);/*request_fn_proc是處理函數(shù)*/

simp_blkdev_queue = blk_init_queue(simp_blkdev_do_request,NULL);

塊設備相關(guān)操作:

static struct block_device_operations simp_blkdev_fops={

? ? ? ? ? ? .owner? ? ? ? = THIS_MODULE,

};

初始化塊設備參數(shù):

strcpy(simp_blkdev_disk->disk_name,SIMP_BLKDEV_DISKNAME); /*設置設備名*/

simp_blkdev_disk->major = SIMP_BLKDEV_DEVICEMAJOR; /*主設備號*/

simp_blkdev_disk->first_minor = 0; /*第一個次設備號*/

simp_blkdev_disk->fops = &simp_blkdev_fops; /*塊設備的相關(guān)操作*/

simp_blkdev_disk->queue = simp_blkdev_queue; /*上面的請求隊列*/

set_capacity(simp_blkdev_disk,SIMP_BLKDEV_BYTES>>9);/*設置容量*/

然后向模塊添加這個設備:

add_disk(simp_blkdev_disk);

不要忘了在模塊退出函數(shù)中移除相關(guān)的結(jié)構(gòu):

del_gendisk(simp_blkdev_disk);

put_disk(simp_blkdev_disk);

blk_cleanup_queue(simp_blkdev_queue);

最后還有一個請求隊列處理函數(shù):

void simp_blkdev_do_request(struct request_queue*q)

這個函數(shù)對我們塊設備(實質(zhì)上是一塊內(nèi)存)的請求進行處理线衫。但是后面會被改掉玖绿。

總結(jié):

這是整個塊驅(qū)動程序的框架照宝,最關(guān)鍵的是對塊設備gendisk結(jié)構(gòu)參數(shù)的設置杨赤,包括一些操作函數(shù)和一個請求隊列茧痕。

2016.04.10

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末野来,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子曼氛,更是在濱河造成了極大的恐慌搪锣,老刑警劉巖构舟,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件弹澎,死亡現(xiàn)場離奇詭異努咐,居然都是意外死亡渗稍,警方通過查閱死者的電腦和手機竿屹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門报强,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拱燃,“玉大人碗誉,你說我怎么就攤上這事哮缺〕⑽” “怎么了格仲?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長侮东。 經(jīng)常有香客問我悄雅,道長,這世上最難降的妖魔是什么容诬? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任狈定,我火速辦了婚禮纽什,結(jié)果婚禮上稿湿,老公的妹妹穿的比我還像新娘包斑。我一直安慰自己罗丰,他們只是感情好萌抵,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著滔驶,像睡著了一般揭糕。 火紅的嫁衣襯著肌膚如雪著角。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天嫩海,我揣著相機與錄音叁怪,去河邊找鬼。 笑死血柳,一個胖子當著我的面吹牛难捌,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播击敌,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼刃宵,長吁一口氣:“原來是場噩夢啊……” “哼牲证!你這毒婦竟也來了诚撵?” 一聲冷哼從身側(cè)響起寿烟,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤徘六,失蹤者是張志新(化名)和其女友劉穎内边,沒想到半個月后待锈,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體和屎,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年宽气,在試婚紗的時候發(fā)現(xiàn)自己被綠了萄涯。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡窃判,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出喇闸,到底是詐尸還是另有隱情袄琳,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布燃乍,位于F島的核電站唆樊,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏刻蟹。R本人自食惡果不足惜逗旁,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望舆瘪。 院中可真熱鬧片效,春花似錦、人聲如沸英古。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽召调。三九已至膨桥,卻和暖如春蛮浑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背只嚣。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工沮稚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人册舞。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓蕴掏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親环础。 傳聞我的和親對象是個殘疾皇子囚似,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容

  • 上一節(jié)給出了一個塊驅(qū)動程序的框架。其中 static struct request_queue *simp_blk...
    rlkbk閱讀 373評論 0 0
  • 大學的時候线得,幫朋友寫的操作系統(tǒng)調(diào)研的作業(yè)饶唤,最近整理過去的文檔時候偶然發(fā)現(xiàn),遂作為博客發(fā)出來贯钩。 從串口驅(qū)動到Linu...
    free_will閱讀 7,401評論 7 59
  • 多線程募狂、特別是NSOperation 和 GCD 的內(nèi)部原理。運行時機制的原理和運用場景角雷。SDWebImage的原...
    LZM輪回閱讀 2,009評論 0 12
  • 以前總喜歡搬個板凳祸穷,聽年長的人講那些過去的一二事,時間長了勺三,見過沒見過的聽過沒聽過的熟悉亦或是不熟悉的雷滚,講故事的人...
    有脾氣的小飯團閱讀 145評論 0 1
  • 畫了好幾遍,小貓咪和小熊畫得還是不夠好≥﹏≤吗坚,顏色選擇也不太好祈远,第十四天了,加油商源!
    誰是大耳朵圖圖閱讀 226評論 1 2