網絡卡驅動5 dm9000驅動中用到一些函式的解釋

2021-06-16 05:29:21 字數 1231 閱讀 4723

dm9000驅動中用到一些函式的解釋

1。skb_reserve()

skb_reserve可以在緩衝區的頭部預留一定的空間,它通常被用來在緩衝區中給協議頭預留空間或者在某個邊界上對齊。這個函式改變data和tail指標,而data和tail指標分別指向負載的開頭和結尾。這個函式通常在分配緩衝區之後就呼叫,此時的data和tail指標還是指向同乙個地方。

/usr/src/linux-2.6.19/include/linux/skbuff.h

static inline void skb_reserve(struct sk_buff *skb, int len)

2. skb_put() -- 擴充套件資料緩衝區大小 skb_put() -- 擴充套件緩衝區中資料區域的大小;增加len個位元組

/usr/src/linux-2.6.19/include/linux/skbuff.h

static inline unsigned char *skb_put(struct sk_buff *skb, unsigned int len)

3. linux核心定時器的用法

總的來說,timer的用法還是很簡單的主要需要定義乙個timer_list變數timer

先初始化timer

init_timer(&timer);

then 對timer的相關引數賦值:

timer.function = fun;

timer.expires = jiffies + timer_delay;

add_timer(&timer);

在定時器時間到的時候,會執行fun,如果繼續定時,可以通過

在fun中執行

mod_timer(&timer, jiffies + timer_delay);

在不需要的時候通過呼叫

del_timer(&timer);

刪除定時器

4. 載波訊號檢測

網路裝置預設具備載波訊號存在,驅動程式可通過動作函式來顯式地改變狀態。比如:

void netif_carrier_on (struct net_device *dev);如果驅動程式沒有偵測到裝置上的載波訊號,那麼將執行

netif_carrier_off(struct net_device *dev);動作,並告訴核心,一旦偵測到載波訊號,那麼將執行

void netif_carrier_on動作函式,也可用int netif_carrier_ok(struct net_device *dev);。

網絡卡(dm9000)驅動移植

網絡卡 dm9000 驅動移植 看到網上有很多的部落格分享,比如 在此,描述一下自己的製作過程 1.修改arch arm plat s3c24xx common smdk.c檔案 在包含標頭檔案的區域增加以下 在smdk devs結構體之前新增以下 if defined config dm9000 ...

DM9000C網絡卡驅動

目的 通過學習,掌握如何移植 編寫dm9000c網絡卡驅動 一 概述 dm9000是一款高度整合低功耗快速乙太網處理器,該晶元整合了mac和phy。dm9000可以和cpu直接連線,支援8位 16位和32位資料匯流排寬度。該晶元支援10m和100m自適應乙太網介面,內部有16k的fifo以及4k雙位...

驅動 DM9000網絡卡驅動分析

preface 核心原始碼版本 linux 2.6.18 網絡卡驅動 linux核心網路分層結構 dm9000晶元 dm9000是一款高度整合低功耗快速乙太網處理器,該晶元整合了mac和phy。dm9000可以和cpu直接連線,支援8位 16位和32位資料匯流排寬度。該晶元支援10m和100m自適應...