设为首页 加入收藏

TOP

设计Linux系统网络设备驱动程序(四)
2010-12-30 20:36:04 来源:赛迪网 作者:李卫刚 【 】 浏览:4802
Tags:设计 Linux 系统 网络设备 驱动程序
gt;init = ne_probe; //初始化init为ne_probe,后面介绍此函数
//调用registre_netdevice()向系统登记网络接口,在这个函数中将分配给网络接口在系统中惟一
的名称。并且将该网络接口设备添加到系统管理的链表dev-base中进行管理。
if (register_netdev(dev) == 0) {
found++;
continue; }
… //省略
}
return 0;}


模块卸载功能由cleanup_module()函数来实现。如下所示:

void cleanup_module(void)
{
int this_dev;
//遍历整个dev-ne数组
for (this_dev = 0; this_dev < MAX_NE_CARDS; this_dev++) {
//获得net-device结构指针
struct net_device *dev = &#38;dev_ne[this_dev];
if (dev->priv != NULL) {
void *priv = dev->priv;
struct pci_dev *idev = (struct pci_dev *)ei_status.priv;
//调用函数指针 idev->deactive将已经激活的网卡关闭使用
if (idev) idev->deactivate(idev);
free_irq(dev->irq, dev);
//调用函数release_region()释放该网卡占用的I/O地址空间
release_region(dev->base_addr, NE_IO_EXTENT);
//调用unregister_netdev()注销 这个net_device()结构
unregister_netdev(dev);
kfree(priv); //释放priv空间
}
}
}


2.网络接口初始化

实现此功能是由ne_probe()函数来完成的。前面已经提到过,在init_module()函数中用它来初始化init函数指针。它主要对网卡进行检测,并且初始化系统中网络设备信息,用于后面的网络数据的发送和接收。具体过程及解释如下:

int __init ne_probe(struct net_device *dev)
{
unsigned int base_addr = dev->base_addr;
//初始化dev-o
首页 上一页 1 2 3 4 5 6 下一页 尾页 4/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux部分命令简介 下一篇Linux系统调用跟我学――僵尸进程

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: