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自適應...