【Linux device driver】裝置驅動程式概述(一)

來源:互聯網
上載者:User

1.1 Linux裝置驅動程式分類

Linux系統的裝置分為三類:

(1)字元裝置(char device)
(2)塊裝置(block device)
(3)網路裝置(network device)。

字元裝置是指存取時沒有緩衝的裝置。(滑鼠,鍵盤,串列口)
塊裝置的讀寫都有緩衝來支援,並且塊裝置必須能夠隨機存取(random access)(硬碟,磁碟片,CD-ROM等)。一個檔案系統要安裝進入作業系統必須在塊裝置上。

網路裝置在Linux裡做專門的處理。為屏蔽物理裝置的多樣性,liunx對所有的網路裝置抽象,並定義統一概念:介面(interface)。對於每一個已經驅動了的網路裝置,都用一個struct device的資料結構表示。

網路裝置與字元裝置及塊裝置的不同

(1)網路介面不存在於linux檔案系統中,而是在核心中用一個net_device資料結構表示。而字元和塊裝置都存在與之對應的裝置檔案 (/dev/hda1).
(2)網路裝置在資料包發送和接收時,直接通過介面訪問,而不需要進行檔案的操作。
(3)網路介面是在系統初始化的時產生的,對於核心支援但不存在的物理裝置,將不存在與只對應的net_device結構。

在系統和驅動程式之間定義有專門的資料結構(sk_buff)進行資料的傳遞。系統裡支援對發送資料和接收資料的緩衝,提供流量控制機制,提供對多協議的支援。

1.2 編寫驅動程式的一些基本概念

        1.2.1 發送和接收

這是一個網路裝置最基本的功能。
OS必須要提供兩個機制:
(1)找到驅動程式的發送函數
(2)驅動程式把收到的資料送給系統。

  1.2.2 中斷
作業系統在硬體中斷髮生後調用驅動程式的處理常式。Linux支援中斷的共用,即多個裝置共用一個中斷。

  1.2.3 時鐘
 在網路驅動程式中,如果硬體沒有中斷功能,定時器可以提供輪詢(poll)方式對硬體進行存取。或者是實現某些協議時需要的逾時重傳等

上一篇:《[linux driver]用I/O命令訪問PCI匯流排裝置配置空間》
下一篇:《【Linux device driver】網路裝置驅動程式(二)》

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.