萬盛學電腦網

 萬盛學電腦網 >> Linux教程 >> Linux--Linux網絡驅動程序編寫(二)在線閱讀

Linux--Linux網絡驅動程序編寫(二)在線閱讀

 二.Linux系統網絡設備驅動程序
2.1 網絡驅動程序的結構

  所有的Linux網絡驅動程序遵循通用的接口。設計時采用的是面向對象的方法。一個設備就是一個對象(device 結構),它內部有自己的數據和方法。每一個設備的方法被調用時的第一個參數都是這個設備對象本身。這樣這個方法就可以存取自身的數據(類似面向對象程序設計時的this引用)。一個網絡設備最基本的方法有初始化 發送和接收。
------------------- ---------------------
|deliver packets | |receive packets queue|
|(dev_queue_xmit()) | |them(netif_rx()) |
------------------- ---------------------
| | /
/ | |
-------------------------------------------------------
| methods and variables(initialize,open,close,hard_xmit,|
| interrupt handler,config,resources,status...) |
-------------------------------------------------------
| | /
/ | |
----------------- ----------------------
|send to hardware | |receivce from hardware|
----------------- ----------------------
| | /
/ | |
-----------------------------------------------------
| hardware media |
-----------------------------------------------------
  初始化程序完成硬件的初始化 device中變量的初始化和系統資源的申請 發送程序是在驅動程序的上層協議層有數據要發送時自動調用的。一般驅動程序中不對發送數據進行緩存,而是直接使用硬件的發送功能把數據發送出去。接收數據一般是通過硬件中斷來通知的。在中斷處理程序裡,把硬件幀信息填入一個skbuff結構中,然後調用netif_rx()傳遞給上層處理。


copyright © 萬盛學電腦網 all rights reserved