上 编写Linux网络设备驱动( 四 )


6.3 逻辑设备的其它接口
static int rtl8139_open(struct net_device *dev) {LOG_MSG("rtl8139_open iscalled\n");return 0;}static int rtl8139_stop(struct net_device *dev){LOG_MSG("rtl8139_open is called\n");return 0;}static int rtl8139_start_xmit(struct sk_buff *skb, struct net_device *dev){LOG_MSG("rtl8139_start_xmit is called\n");return 0;}static struct net_device_stats* rtl8139_get_stats(struct net_device *dev){LOG_MSG("rtl8139_get_stats is called\n");return 0;}
Table 6: Dummy
6.4 注销函数
最后是注销函数:
void cleanup_module(void){struct rtl8139_private *tp;tp = rtl8139_dev->priv;iounmap(tp->mmio_addr);pci_release_regions(tp->pci_dev);unregister_netdev(rtl8139_dev);pci_disable_device(tp->pci_dev);return;}
Table 7:
6.5 编译测试
到此,一支完整的8139网卡设备驱动基本完成了,当然目前还只是一个模板,没有实质性的功能 。我们可以编译并安装它了 。
$ gcc -c .c - - -I /usr/src/linux-2.4.18/
$.o
Table 8:the
安装不出问题的话,我们可以用SHELL命令进行测试:””, “ – a”, “up”, “” 和 “down” 。如无意外,” – a” 会列出设备;执行 “up”会返回消息””等等……
好了,通过测试后,下一步是实现网络设备真正的数据收发了 。为了更好理解实现代码,我们还是需要一些背景知识——理解收发原理 。