WEB开发网
开发学院软件开发Shell Linux编程:网络设备驱动详解 阅读

Linux编程:网络设备驱动详解

 2009-06-30 04:36:00 来源:WEB开发网   
核心提示: 3,注销网络设备static void __devexit tg3_remove_one(struct pci_dev *pdev){struct net_device *dev = pci_get_drvdata(pdev);//注销网络设备unregister_netdev(dev);//取消地址映射iounma

  3,注销网络设备

static void __devexit tg3_remove_one(struct pci_dev *pdev)

{

struct net_device *dev = pci_get_drvdata(pdev);

//注销网络设备

unregister_netdev(dev);

//取消地址映射

iounmap((void *) ((struct tg3 *)(dev->priv))->regs);

//释放网络设备

kfree(dev);

//释放PCI资源

pci_release_regions(pdev);

//停用PCI设备

pci_disable_device(pdev);

//PCI设备中的设备指针赋空

pci_set_drvdata(pdev, NULL);

}

  4,打开网络设备

static int tg3_open(struct net_device *dev)

{

//分配一个中断

request_irq(dev->irq, tg3_interrupt, SA_SHIRQ, dev->name, dev);

/* int request_irq(unsigned int irq,

void (*handler)(int irq, void *dev_id, struct pt_regs *regs),

unsigned long irqflags,

const char * devname,

void *dev_id);

irq是要申请的硬件中断号。在Intel平台,范围0--15。handler是向系统登记的中断处理函数。这是一个回调函数,中断发生时,系统调用这个函数,传入的参数包括硬件中断号,device id,寄存器值。dev_id就是下面的request_irq时传递给系统的参数dev_id。irqflags是中断处理的一些属性。比较重要的有SA_INTERRUPT,标明中断处理程序是快速处理程序(设置SA_INTERRUPT)还是慢速处理程序(不设置SA_INTERRUPT)。快速处理程序被调用时屏蔽所有中断。慢速处理程序不屏蔽。还有一个SA_SHIRQ属性,设置了以后运行多个设备共享中断。dev_id在中断共享时会用到。一般设置为这个设备的device结构本身或者NULL。中断处理程序可以用dev_id找到相应的控制这个中断的设备,或者用rq2dev_map找到中断对应的设备。*/

上一页  1 2 3 4 5 6 7 8  下一页

Tags:Linux 编程 网络设备

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接