Linux網路驅動程式編寫(一)

來源:互聯網
上載者:User
(轉載)Linux網路驅動程式編寫(一)

2001-06-15·
·Bordi··飲水思來源站點

 
 工作需要寫了我們公司一塊網卡的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)方式對硬體進行存取。或者是實現某些協議時需要的
逾時重傳等。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.