Linux 驅動程式,第三版.jpg 

  • 作者:Jonathan Corbet,Alessandro Rubini,Greg Kroah-Hartman
  • 譯者:林長毅
  • 出版社:歐萊禮
  • 出版日期:2006年05月22日
  • 語言:繁體中文 ISBN:9867794737
  • 定價:NT$ 980     8折價:NT$ 784 
  • 有看部落格有8折的優惠價ㄛ
  • 長久以來,對於任何想要在 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 速查參考

    arrow
    arrow
      全站熱搜

      ETAITBOOK08 發表在 痞客邦 留言(0) 人氣()