Linux網路驅動程式編寫(一)(轉)
工作需要寫了我們公司一塊網路卡的Linux驅動程式。經歷一個從無到有的過程,深感技術交流的重要。Linux作為挑戰微軟壟斷的強有力武器,日益受到大家的喜愛。真希望她能在中國迅速成長。把程式文件貼出來,希望和大家探討Linux技術和應用,促進Linux在中國的普及。
本文可隨意轉載,但請不要在盈利性出版物上刊登。
一.Linux系統裝置驅動程式概述
1.1 Linux裝置驅動程式分類
Linux裝置驅動程式在Linux的核心原始碼中佔有很大的比例,原始碼的長度日益增加,主要是驅動程式的增加。在Linux核心的不斷升級過程中,驅動程式的結構還是相對穩定。在2.0.xx到2.2.xx的變動裡,驅動程式的編寫做了一些改變,但是從2.0.xx的驅動到2.2.xx的移植只需做少量的工作。
Linux系統的裝置分為字元裝置(char device),塊裝置(block device)和網路裝置(network device)三種。字元裝置是指存取時沒有快取的裝置。塊裝置的讀寫都有快取來支援,並且塊裝置必須能夠隨機存取(random access),字元裝置則沒有這個要求。典型的字元裝置包括滑鼠,鍵盤,序列口等。塊裝置主要包括硬碟軟盤裝置,CD-ROM等。一個檔案系統要安裝進入作業系統必須在塊裝置上。
網路裝置在Linux裡做專門的處理。Linux的網路系統主要是基於BSD unix的socket機制。在系統和驅動程式之間定義有專門的資料結構(sk_buff)進行資料的傳遞。系統裡支援對傳送資料和接收資料的快取,提供流量控制機制,提供對多協議的支援。
1.2 編寫驅動程式的一些基本概念
無論是什麼作業系統的驅動程式,都有一些通用的概念。作業系統提供給驅動程式的支援也大致相同。下面簡單介紹一下網路裝置驅動程式的一些基本要求。
1.2.1 傳送和接收
這是一個網路裝置最基本的功能。一塊網路卡所做的無非就是收發工作。所以驅動程式裡要告訴系統你的傳送函式在哪裡,系統在有資料要傳送時就會呼叫你的傳送程式。還有驅動程式由於是直接操縱硬體的,所以網路硬體有資料收到最先能得到這個資料的也就是驅動程式,它負責把這些原始資料進行必要的處理然後送給系統。這裡,作業系統必須要提供兩個機制,一個是找到驅動程式的傳送函式,一個是驅動程式把收到的資料送給系統。是驅動程式把收到的資料送給系統。
1.2.2 中斷
中斷在現代計算機結構中有重要的地位。作業系統必須提供驅動程式響應中斷的能力。一般是把一箇中斷處理程式註冊到系統中去。作業系統在硬體中斷髮生後呼叫驅動程式的處理程式。Linux支援中斷的共享,即多個裝置共享一箇中斷。
1.2.3 時鐘
在實現驅動程式時,很多地方會用到時鐘。如某些協議裡的超時處理,沒有中斷機制的硬體的輪詢等。作業系統應為驅動程式提供定時機制。一般是在預定的時間過了以後回撥註冊的時鐘函式。在網路驅動程式中,如果硬體沒有中斷功能,定時器可以提供輪詢(poll)方式對硬體進行存取。或者是實現某些協議時需要的超時重傳等。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-940216/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux網路驅動程式編寫(四)(轉)Linux
- Linux網路驅動程式編寫(三)(轉)Linux
- Linux網路驅動程式編寫(二)(轉)Linux
- Linux驅動開發筆記(一):helloworld驅動原始碼編寫、makefile編寫以及驅動編譯Linux筆記原始碼編譯
- 用 Delphi 編寫 VxD 裝置驅動程式(轉) (轉)
- Linux驅動實踐:如何編寫【 GPIO 】裝置的驅動程式?Linux
- linux網路卡驅動程式的編譯與安裝(轉)Linux編譯
- usb驅動程式初步編寫
- Linux系統核心模組和驅動的編寫(轉)Linux
- Linux RN6752 驅動編寫Linux
- 如何編寫一個簡單的Linux驅動(三)——完善裝置驅動Linux
- Windows95的裝置驅動程式的編寫 (轉)Windows
- linux裝置驅動編寫入門Linux
- 如何編寫linux下nandflash驅動-4LinuxNaN
- linux裝置驅動編寫基礎Linux
- 入門文章:教你學會編寫Linux裝置驅動(轉)Linux
- linux 觸控式螢幕驅動編寫Linux
- Linux驅動實踐:帶你一步一步編譯核心驅動程式Linux編譯
- 編寫網路尋呼機 (轉)
- linux驅動程式設計(轉)Linux程式設計
- Linux裝置驅動程式 (轉)Linux
- Linux驅動開發筆記(三):基於ubuntu的驅動、makefile編寫以及編譯載入流程Linux筆記Ubuntu編譯
- LINUX下的裝置驅動程式 (轉)Linux
- 為Linux 應用程式編寫 DLL(轉)Linux
- Asahi Lina講述了使用Rust編寫Linux驅動程式的經驗RustLinux
- 手動安裝Linux網路卡驅動程式薦Linux
- 《用Python寫網路爬蟲》--編寫第一個網路爬蟲Python爬蟲
- 用VB編寫網路尋呼機(1) (轉)
- 用VB編寫網路尋呼機(2) (轉)
- 編寫安全的驅動程式之輸入輸出檢查
- 編寫Linux實用程式的藝術(轉)Linux
- 如何編寫一個簡單的Linux驅動(二)——裝置操作集file_operationsLinux
- Linux驅動實踐:你知道【字元裝置驅動程式】的兩種寫法嗎?Linux字元
- WDM驅動程式設計之編譯安裝篇 (轉)程式設計編譯
- 編寫軟體動態載入NT式驅動
- 編寫隨Windows啟動自動執行的程式 (轉)Windows
- Delphi編寫網路程式的安全措施 (轉)
- linux網路卡驅動薦Linux