linux0.99网络模块-网络设备初始化

本文深入剖析Linux 0.99内核中网络设备的初始化过程,主要关注loopback和wd8003设备。文章详细介绍了设备初始化涉及的数据结构,如struct device,以及loopback和wd8003的初始化函数,包括设备参数设置、数据传输函数指针等。通过本文,读者可以理解设备初始化的关键步骤和作用。
摘要由CSDN通过智能技术生成
在《linux0.99网络模块-网络模块初始化》中我们分析了网络模块的初始化过程,其中关于设备初始化我们单独拿到这里来分析。
对于linux0.99内核来说,它初始化了两个设备-loopback和wd8003.
1.数据结构


net/tcp/dev.h
 47 #define DEV_NUMBUFFS 3
 48 #define MAX_ADDR_LEN 6
 49 #define MAX_HEADER 14
 50 #define MAX_ROUTE 16

 52 struct device
 53 {
 54   char *name;                             //设备名
 55   unsigned long rmem_end;     //接收内存结束地址
 56   unsigned long rmem_start;     //接收内存起始地址
 57   unsigned long mem_end;         //设备发送
内存结束地址
 58   unsigned long mem_start;        //设备发送
内存起始地址
 59   unsigned short base_addr;      //寄存器基地址(见tcp/wereg.h:128)
 60   unsigned char irq;                   //中断
 61   unsigned char start:1,              //
启动标志
 62                 tbusy:1,                        //设备忙
 63                 loopback:1,                 //回环设备标志
 64                 interrupt:1,                  //是否有中断
 65                 up:1;                             //
发送标志
 66   struct device *next;                   //连接下一个设备
 67   int (*init)(struct device *dev);     //初始化函数指针
 68   unsigned long trans_start;              //传输开始
 69   struct sk_buff *buffs[DEV_NUMBUFFS];     //缓冲区
 70   struct
sk_buff *backlog; /* no longer used. */ //积压队列
 71   int  (*open)(struct device *dev);                   //打开设备函数指针
 72   int  (*stop)(struct device *dev);                   //停止设备函数指针
 73   int (*hard_start_xmit) (struct sk_buff *skb, struct device *dev);     //
向硬件发送数据
 74   int (*hard_header) (unsigned char *buff, struct device *dev,         /
/ 生成首部
 75               unsigned short type, unsigned long daddr,
 76               unsigned lo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值