×
Linux 驅動程式 第三版
作者: Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman
譯者:林長毅
書號: A184
出版日: 2006/05/01
ISBN:9789867794734
附件: 無
定價: 980
電子書: 未出版
購買紙本書
內容特色
長久以來,對於任何想要在 Linux 作業系統下支援電腦週邊、想要在 Linux 下跑新式硬體、或只是有興趣探討 Linux 核心程式設計觀念的工程師,《Linux 驅動程式》已成為必讀的經典之作。關於如何設計各式各樣驅動程式的知識,原本深藏於原始程式註解的字裡行間,或是只能靠口語相傳,而《Linux 驅動程式》給你有條理的解釋與示範。

本書的作者群都是 Linux 開發圈子裡的領導者。Jonathan Corbet 是廣受好評的 LWN.net 新聞資訊網站的執行編輯,他偶爾也貢獻程式碼給 Linux 核心。 Alessandro Rubini 也貢獻程式給 Linux 核心,他更是熱情的義大利 Linux 社群的精神領袖。Greg Kroah-Hartman 目前是 Linux 2.6 核心中的 USB、PCI 與 Driver core 等子系統的維護者。

驅動程式必須依照核心提供的軟體介面來設計,核心改版,驅動程式也必須跟著改變。相較於 2.4 版核心,Linux 2.6 有著相當大幅度的改變,以往許多一般性的工作,像是 PnP、sysfs 檔案系統與 user-space 之間的互動、以及多種標準匯流排上的裝置管理,現在都已被合理化與簡化。本書這次改版,主要是以 Linux 2.6.10 版核心為準,而這幾乎等於重新改寫了整本書。

要享受本書帶來的饗宴,你不必先成為 Linux 核心的專家,只要你會 C 語言,而且對 UNIX 系統呼叫有些基本概念,就可藉由本書的引導,為你的硬體裝置寫出驅動程式。你將學到如何設計多種類型的驅動程式,包括字元裝置、區塊裝置、以及網路介面;本書提供了完整功能的範例,你不必準備特殊硬體就是編譯並測試範例程式,並將它們當成你的驅動程式的基本骨幹。此外,本書另闢專章探討 PCI、 USB 與 tty 子系統,同時也提供了關於作業系統觀念的知識,包括位址空間、I/O、非同步事件。

內容重點:

完整的字元、區塊、網路介面驅動程式
除錯技術
時序
SMP 系統的因應之道(共時性與各種鎖定機制)
記憶體管理與 DMA
中斷
Linux 裝置模型與 sysfs
熱插拔裝置
常見匯流排的特殊需求,包括 SCSI、PCI、USB、IEEE1394
章節目錄


導讀

第 1 章 裝置驅動程式概論
1.1 驅動程式的角色
1.2 核心概論
1.3 裝置與模組的分類
1.4 安全顧慮
1.5 版本編號
1.6 授權約定
1.7 參與核心開發團隊
1.8 本書架構

第 2 章 模組
2.1 設定你的測試系統
2.2 Hello World 模組
2.3 核心模組 vs 應用程式
2.4 模組的編譯與裝載
2.5 核心符號表
2.6 前置宣告
2.7 模組的生與死
2.8 模組參數
2.9 User-Space 驅動程式
2.10 速查參考

第 3 章 字元裝置驅動程式
3.1 scull 的設計藍圖
3.2 主編號與次編號
3.3 重要的資料結構
3.4 註冊字元裝置
3.5 open 與 release
3.6 Scull 的記憶體用法規劃
3.7 read 與 write
3.8 玩玩新玩意兒
3.9 速查參考

第 4 章 偵錯技術
4.1 核心對於偵錯的支援
4.2 訊息偵錯法
4.3 查詢偵錯法
4.4 觀測偵錯法
4.5 排除重大系統失誤
4.6 偵錯工具

第 5 章 共時情境與相競現象
5.1 scull 裡的陷阱
5.2 共時情境與其控管方法
5.3 權狀(Semaphores)與獨佔權(Mutexes)
5.4 完工通知
5.5 迴旋鎖
5.6 鎖定機制的使用心法
5.7 鎖定技術的替代方案
5.8 速查參考

第 6 章 字元驅動程式的進階作業
6.1 ioctl
6.2 Blocking I/O
6.3 輪詢作業(poll 與 select)
6.4 臨時通知(Asynchronous Notification)
6.5 定位作業
6.6 裝置檔的存取控制
6.7 速查參考

第 7 章 時序
7.1 測量時隔
7.2 攝取「目前時刻」
7.3 延遲執行
7.4 核心計時器
7.5 Tasklet
7.6 工作佇列
7.7 速查參考

第 8 章 配置記憶體
8.1 kmalloc 的來龍去脈
8.2 前瞻快取(Lookaside Caches)
8.3 get_free_page() 系列函式
8.4 vmalloc() 與其相關函式
8.5 個別 CPU 的從屬變數
8.6 獲取大量記憶體
8.7 速查參考

第 9 章 硬體操作
9.1 「I/O 埠」與「I/O 記憶體」
9.2 I/O 埠的用法
9.3 I/O 埠的實例
9.4 使用 I/O 記憶體
9.5 速查參考

第 10 章 中斷處置
10.1 關於並列埠的準備工作
10.2 安裝 ISR
10.3 實作 ISR
10.4 ISR 的上下半段
10.5 中斷共享
10.6 中斷驅動式 I/O
10.7 速查參考

第 11 章 核心裡的資料型別
11.1 使用標準的 C 型別
11.2 有明確長度的資料項
11.3 介面專屬型別
11.4 移植性的顧慮
11.5 鏈結串列
11.6 速查參考

第 12 章 PCI 驅動程式
12.1 PCI 介面
12.2 回顧:ISA
12.3 PC 電腦上的其它匯流排
12.4 SBus
12.5 NuBus
12.6 外接式匯流排
12.7 速查參考

第 13 章 USB 驅動程式
13.1 USB 裝置的基本概論
13.2 USB 與 Sysfs
13.3 USB Urb
13.4 設計 USB 裝置驅動程式
13.5 不使用 URB 的 USB 傳輸
13.6 速查參考

第 14 章 Linux 裝置模型
14.1 Kobject、Ksets 與子系統
14.2 低階的 Sysfs 作業
14.3 熱插拔事件的產生
14.4 匯流排、裝置、驅動程式
14.5 類別
14.6 全部湊在一起
14.7 熱插拔(Hotplug)
14.8 韌體的更新
14.9 速查參考

第 15 章 MMAP 與 DMA
15.1 Linux 的記憶體管理
15.2 mmap 作業方法
15.3 直接 I/O
15.4 直接記憶體存取(DMA)
15.5 速查參考

第 16 章 區塊驅動程式
16.1 註冊
16.2 區塊裝置作業
16.3 傳輸要求的處理程序
16.4 補充細節
16.5 速查參考

第 17 章 網路介面驅動程式
17.1 snull 的設計理念
17.2 與核心相連
17.3 詳解 net_device 結構
17.4 開啟與關閉
17.5 封包傳送
17.6 封包接收
17.7 中斷處置
17.8 NAPI
17.9 連線狀態的變化
17.10 sk_buff 結構
17.11 MAC 位址查解
17.12 自訂的 ioctl 命令
17.13 統計資訊
17.14 群播
17.15 補充題材
17.16 速查參考

第 18 章 TTY 驅動程式
18.1 一個迷你 TTY 驅動程式
18.2 tty_driver 的作業方法
18.3 TTY 線路參數
18.4 ioctl 作業
18.5 TTY 裝置的 proc 與 sysfs 節點
18.6 tty_driver 結構的細節
18.7 tty_operations 結構的細節
18.8 tty_struct 結構的細節
18.9 速查參考

參考書目

索引
Linux 驅動程式 第三版 分享
  • 作者: Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman
  • 書號:A184
  • ISBN:9789867794734
  • 出版日:2006/05/01
  • 定價:$ 980
  • 電子書:已出版
  • 購買紙本書

    天瓏  博客來  
    內容特色
    長久以來,對於任何想要在 Linux 作業系統下支援電腦週邊、想要在 Linux 下跑新式硬體、或只是有興趣探討 Linux 核心程式設計觀念的工程師,《Linux 驅動程式》已成為必讀的經典之作。關於如何設計各式各樣驅動程式的知識,原本深藏於原始程式註解的字裡行間,或是只能靠口語相傳,而《Linux 驅動程式》給你有條理的解釋與示範。

    本書的作者群都是 Linux 開發圈子裡的領導者。Jonathan Corbet 是廣受好評的 LWN.net 新聞資訊網站的執行編輯,他偶爾也貢獻程式碼給 Linux 核心。 Alessandro Rubini 也貢獻程式給 Linux 核心,他更是熱情的義大利 Linux 社群的精神領袖。Greg Kroah-Hartman 目前是 Linux 2.6 核心中的 USB、PCI 與 Driver core 等子系統的維護者。

    驅動程式必須依照核心提供的軟體介面來設計,核心改版,驅動程式也必須跟著改變。相較於 2.4 版核心,Linux 2.6 有著相當大幅度的改變,以往許多一般性的工作,像是 PnP、sysfs 檔案系統與 user-space 之間的互動、以及多種標準匯流排上的裝置管理,現在都已被合理化與簡化。本書這次改版,主要是以 Linux 2.6.10 版核心為準,而這幾乎等於重新改寫了整本書。

    要享受本書帶來的饗宴,你不必先成為 Linux 核心的專家,只要你會 C 語言,而且對 UNIX 系統呼叫有些基本概念,就可藉由本書的引導,為你的硬體裝置寫出驅動程式。你將學到如何設計多種類型的驅動程式,包括字元裝置、區塊裝置、以及網路介面;本書提供了完整功能的範例,你不必準備特殊硬體就是編譯並測試範例程式,並將它們當成你的驅動程式的基本骨幹。此外,本書另闢專章探討 PCI、 USB 與 tty 子系統,同時也提供了關於作業系統觀念的知識,包括位址空間、I/O、非同步事件。

    內容重點:

    完整的字元、區塊、網路介面驅動程式
    除錯技術
    時序
    SMP 系統的因應之道(共時性與各種鎖定機制)
    記憶體管理與 DMA
    中斷
    Linux 裝置模型與 sysfs
    熱插拔裝置
    常見匯流排的特殊需求,包括 SCSI、PCI、USB、IEEE1394
    章節目錄


    導讀

    第 1 章 裝置驅動程式概論
    1.1 驅動程式的角色
    1.2 核心概論
    1.3 裝置與模組的分類
    1.4 安全顧慮
    1.5 版本編號
    1.6 授權約定
    1.7 參與核心開發團隊
    1.8 本書架構

    第 2 章 模組
    2.1 設定你的測試系統
    2.2 Hello World 模組
    2.3 核心模組 vs 應用程式
    2.4 模組的編譯與裝載
    2.5 核心符號表
    2.6 前置宣告
    2.7 模組的生與死
    2.8 模組參數
    2.9 User-Space 驅動程式
    2.10 速查參考

    第 3 章 字元裝置驅動程式
    3.1 scull 的設計藍圖
    3.2 主編號與次編號
    3.3 重要的資料結構
    3.4 註冊字元裝置
    3.5 open 與 release
    3.6 Scull 的記憶體用法規劃
    3.7 read 與 write
    3.8 玩玩新玩意兒
    3.9 速查參考

    第 4 章 偵錯技術
    4.1 核心對於偵錯的支援
    4.2 訊息偵錯法
    4.3 查詢偵錯法
    4.4 觀測偵錯法
    4.5 排除重大系統失誤
    4.6 偵錯工具

    第 5 章 共時情境與相競現象
    5.1 scull 裡的陷阱
    5.2 共時情境與其控管方法
    5.3 權狀(Semaphores)與獨佔權(Mutexes)
    5.4 完工通知
    5.5 迴旋鎖
    5.6 鎖定機制的使用心法
    5.7 鎖定技術的替代方案
    5.8 速查參考

    第 6 章 字元驅動程式的進階作業
    6.1 ioctl
    6.2 Blocking I/O
    6.3 輪詢作業(poll 與 select)
    6.4 臨時通知(Asynchronous Notification)
    6.5 定位作業
    6.6 裝置檔的存取控制
    6.7 速查參考

    第 7 章 時序
    7.1 測量時隔
    7.2 攝取「目前時刻」
    7.3 延遲執行
    7.4 核心計時器
    7.5 Tasklet
    7.6 工作佇列
    7.7 速查參考

    第 8 章 配置記憶體
    8.1 kmalloc 的來龍去脈
    8.2 前瞻快取(Lookaside Caches)
    8.3 get_free_page() 系列函式
    8.4 vmalloc() 與其相關函式
    8.5 個別 CPU 的從屬變數
    8.6 獲取大量記憶體
    8.7 速查參考

    第 9 章 硬體操作
    9.1 「I/O 埠」與「I/O 記憶體」
    9.2 I/O 埠的用法
    9.3 I/O 埠的實例
    9.4 使用 I/O 記憶體
    9.5 速查參考

    第 10 章 中斷處置
    10.1 關於並列埠的準備工作
    10.2 安裝 ISR
    10.3 實作 ISR
    10.4 ISR 的上下半段
    10.5 中斷共享
    10.6 中斷驅動式 I/O
    10.7 速查參考

    第 11 章 核心裡的資料型別
    11.1 使用標準的 C 型別
    11.2 有明確長度的資料項
    11.3 介面專屬型別
    11.4 移植性的顧慮
    11.5 鏈結串列
    11.6 速查參考

    第 12 章 PCI 驅動程式
    12.1 PCI 介面
    12.2 回顧:ISA
    12.3 PC 電腦上的其它匯流排
    12.4 SBus
    12.5 NuBus
    12.6 外接式匯流排
    12.7 速查參考

    第 13 章 USB 驅動程式
    13.1 USB 裝置的基本概論
    13.2 USB 與 Sysfs
    13.3 USB Urb
    13.4 設計 USB 裝置驅動程式
    13.5 不使用 URB 的 USB 傳輸
    13.6 速查參考

    第 14 章 Linux 裝置模型
    14.1 Kobject、Ksets 與子系統
    14.2 低階的 Sysfs 作業
    14.3 熱插拔事件的產生
    14.4 匯流排、裝置、驅動程式
    14.5 類別
    14.6 全部湊在一起
    14.7 熱插拔(Hotplug)
    14.8 韌體的更新
    14.9 速查參考

    第 15 章 MMAP 與 DMA
    15.1 Linux 的記憶體管理
    15.2 mmap 作業方法
    15.3 直接 I/O
    15.4 直接記憶體存取(DMA)
    15.5 速查參考

    第 16 章 區塊驅動程式
    16.1 註冊
    16.2 區塊裝置作業
    16.3 傳輸要求的處理程序
    16.4 補充細節
    16.5 速查參考

    第 17 章 網路介面驅動程式
    17.1 snull 的設計理念
    17.2 與核心相連
    17.3 詳解 net_device 結構
    17.4 開啟與關閉
    17.5 封包傳送
    17.6 封包接收
    17.7 中斷處置
    17.8 NAPI
    17.9 連線狀態的變化
    17.10 sk_buff 結構
    17.11 MAC 位址查解
    17.12 自訂的 ioctl 命令
    17.13 統計資訊
    17.14 群播
    17.15 補充題材
    17.16 速查參考

    第 18 章 TTY 驅動程式
    18.1 一個迷你 TTY 驅動程式
    18.2 tty_driver 的作業方法
    18.3 TTY 線路參數
    18.4 ioctl 作業
    18.5 TTY 裝置的 proc 與 sysfs 節點
    18.6 tty_driver 結構的細節
    18.7 tty_operations 結構的細節
    18.8 tty_struct 結構的細節
    18.9 速查參考

    參考書目

    索引