萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 網路驅動程式開發(二):驅動架構、device 結構與核心方法

二、Linux 網路裝置驅動程式架構

2.1 物件導向設計

所有網路驅動遵循通用介面,採用物件導向設計:一個裝置即一個物件(device 結構),內含自身資料與方法。方法被呼叫時第一個參數皆為該裝置物件本身(類似 this 指標),可存取自身資料。

2.2 三大核心方法

交付封包 (dev_queue_xmit())          接收封包佇列 (netif_rx())
        |                                      |
        ----------------------------------------
        | methods & variables                  |
        | initialize, open, close,             |
        | hard_xmit, interrupt handler,        |
        | config, resources, status ...        |
        ----------------------------------------
        |                                      |
發送至硬體                          從硬體接收資料
        ----------------------------------------
              硬體介面層
        ----------------------------------------
  • 初始化程式:硬體初始化、device 變數初始化、系統資源申請
  • 發送程式:上層協定有資料發送時自動呼叫,通常不緩衝,直接用硬體發送功能傳出
  • 接收資料:硬體中斷通知 → 中斷處理程式將硬體幀資訊填入 skbuff → 呼叫 netif_rx() 傳遞給上層協定處理
copyright © 萬盛學電腦網 all rights reserved