O’Reilly, “Linux Device Drivers” 的讀法
如果您是Linux驅動程式的初學者,想要以這本書來自學驅動程式,又要在最短時間內掌握整個Linux驅動程式的精神,那麼有幾個方向提供您做參考:
- 不要依照章節順序來閱讀
- 不要地毯式的閱讀(即:不要依照章節與段落順序)
- Virtual File System (VFS)
- 'open' and 'release' system calls
- 'open' and 'release' driver function
- Wait Queues
- Blocking and Nonblocking read/write
- kmalloc(), copy_to_user(), copy_from_user()
- I/O ports
- ioctl()
- 'ioctl' driver function
- Reentrant codes (function)
- Semaphore
- Kernel Timer, Asynchronous Notification
- Pre-Defined Task Queues
- User-Defined Task Queues
- Writing an Interrupt Handler
- PCI Device Driver
- Spinlocks
- Bottom-half and Tasklets
此建議順序即是Jollen教育訓練課程所使用的投影片主題順序,自學的朋友,應該參考此建議順序,規劃一套屬於自己的閱讀計畫,如此便能加速學習Linux驅動程式。
結語
我們條列說明Linux驅動程式的核心觀念,以利讀者掌握學習方向:
- Device file 是user application與Linux驅動程式溝通的媒介。
- Device file 有一個不重覆的識別號碼,稱為major number,並有自己的minor number用來表示自己的子裝置。
- 不同的Linux驅動程式,均「支援」一個device file;更精確的說法是,不同的Linux驅動程式,均「對應」一個「major number」。
- Device file 即是VFS層。
- Linux驅動程式的核心為file operations,此即「Linux 驅動程式物件」。
- User application透過system call與device file 來與驅動程式溝通,user application必須先呼叫open system call來「開啟驅動程式」。
- 不同的system call C函數,會透過Linux kernel對應,並由Linux kernel callback驅動程式裡相對應的 system call實作函數。
- 驅動程式裡個別的system call實作函數,是由file operations所定義的。
- File operations 即struct file_operations,struct file_operations定義system call的名稱與實作函數的對應,此對應關係使用「函數指標」來實作。
沒有留言:
張貼留言