linux網路驅動分析

2021-08-13 05:07:27 字數 785 閱讀 4906

網路驅動與字元驅動和塊驅動最大的區別在於沒有裝置節點,這也是linux中一切皆檔案的乙個例外。網路裝置沒有裝置節點,那麼給應用層提供的操作方式是怎麼的呢?答案是-系統呼叫。如我們在網路程式設計中經常用到的socket(),bind(),listen(),accept()。

下面這張圖展示了從應用層發起系統呼叫到驅動層的呼叫過程。

應用層呼叫socket()本質上是乙個glibc中的函式,執行實際上是是呼叫sys_socketcall()系統呼叫。sys_socketcall()是幾乎所有socket相關函式的入口,即是說,bind,connect等等函式都需要sys_socketcall()作為入口。該系統呼叫**如下:

以下以android**為例

kernel\net\socket.c

syscall_define2(socketcall, int, call, unsigned long __user *, args)

{ unsigned long a[auditsc_args];

unsigned long a0, a1;

int err;

unsigned int len;

if (call < 1 || call > sys_sendmmsg)

return -einval;

len = nargs[call];

i

Linux網路驅動原始碼分析 一

網路驅動是一種典型的pci裝置驅動,無論在嵌入式平台還是在pc領域,網路相關的專案開發有著比較廣闊的前景,因此,分析當前linux核心中網路裝置的驅動,不但能了解網路相關的基本原理,而且可以借鑑linux核心的先進的技術,將其應用到嵌入式或其他領域。本文以linux核心中的rtl8139網路驅動為例...

Linux驅動之網路驅動應用

include include include printk include kmalloc include error codes include size t include mark bh include include struct device,and other headers incl...

Linux高階驅動 LCD驅動框架分析

功能 給使用者提供介面 fbmem init 入口函式 1.申請主裝置號,註冊字元裝置 register chrdev fb major 29 fb fb fops 2.建立乙個裝置類 fb class class create this module,graphics static const s...