/*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函式。一 使用者空間...