LDD3原始碼學習筆記之scull pipe轉

2021-04-21 09:14:28 字數 1142 閱讀 6413

/*pipe.c*/

/*****************************************=*/

/*驅動功能分析*/

本驅動使用環形緩衝作為scull裝置的的具體實現,類似於pipe.

其中實現了阻塞的i/o讀寫和非同步通知.

/*****************************************=*/

/*主函式流程分析*/

1.定義scull_pipe裝置機構體()

2.初始化模組module_init(scull_p_init)

3.退出並登出模組module_exit(scull_p_cleanup)

4.裝置相關檔案操作函式(fpos)的定義()

(2)release(scull_p_release)

(3)read()

(4)write()

(5)poll()

(6)fasync()

}5.proc除錯方法函式()

/*****************************************=*/

/*收穫*/

/*--------------------------------*/

1.如何使用環形緩衝()

/*--------------------------------*/

2.手動實現程序休眠()

/*--------------------------------*/

3.驅動中非同步通知的實現()

2.kill_fasync(&dev->async_queue, sigio, poll_in);

/*對應使用者空間如何呼叫*/

0.設定訊號處理函式:signal(sigio, &handler);

1.指定fd檔案的所有者fcntl(fd, f_setown, getpid( ));

2.使非同步使能,即呼叫非同步oflags = fcntl(fd, f_getfl)&fcntl(fd, f_setfl, oflags | fasync);

LDD3原始碼分析之vmalloc

部落格 編譯環境 ubuntu 10.10 核心版本 2.6.32 38 generic pae ldd3原始碼路徑 examples scullv 一 scullv編譯本文分析ldd3第8章中與vmalloc函式相關 對應原始碼是examples scullv目錄下的相關檔案。這裡首先說明一下,s...

LDD3原始碼學習日記《四》

日記三不小心被刪了。哎,只能在 站裡面自己看了。這部落格80 的功能還是寫給自己看的,其他部分的功能應該是用來練習寫作能力的,留下這一路走來的證據,兩年後回過頭來看看自己當初是怎麼犯低階錯誤的。哈哈。第五章是併發與競態,書上的內容講的主要是訊號量和自旋鎖機制,還有completion,不過書上介紹這...

LDD3原始碼分析之llseek分析

分類 ldd3原始碼分析 2012 03 28 14 36 201人閱讀收藏 舉報部落格 編譯環境 ubuntu 10.10 核心版本 2.6.32 38 generic pae ldd3原始碼路徑 examples scull main.c 本文分析ldd3第6章的llseek函式。一 使用者空間...