PCI 设备驱动课件.ppt

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PCI 设备驱动课件

分配与释放,注册与注销 在内核空间运行的模块,在分配了系统资源后,必须在不再使用前,进行释放,向内核返回所分配的资源。同时,很多模块在实际使用前,必须向内核注册自己,同样,在生命期结束时,必须向内核注销自己。 分配与释放,注册与注销。在内核模块中,经常是成对出现的。在我们前文描述的8139too网卡驱动初始化程序中,就存在很多这样的操作。下面我们一一列出,并作简单分析: 分配与释放,注册与注销 pci_register_driver与pci_unregister_driver 它们是分别在PCI设备驱动模块的初始化函数和清除函数中被调用的函数,都以一个struct pci_driver结构体作为参数。 分配与释放,注册与注销 struct pci_driver { struct list_head node; char *name; // driver module’s name struct module *owner; const struct pci_device_id *id_table; // supported pci device int (*probe)(struct pci_dev *dev, const struct pci_device_id *id); void (*remove)(struct pci_dev *dev); int (*suspend)(struct pci_dev *dev, pm_message_t state); int (*resume)(struct pci_dev *dev); /* Device woken up */ int (*enable_wake)(struct pci_dev *dev,pci_power_t state,int enable); void (*shutdown) (struct pci_dev *dev); struct device_driver driver; struct pci_dynids dynids; }; 分配与释放,注册与注销 它有一个成员struct device_driver,是一个更为一般化的设备驱动对象,在pci_register_driver函数中,会把pci_driver的很多成员赋给该结构中的相应成员。同时,建立动态PCI的id表(为热插拔设备用)。最后,向总线注册该设备。 而在pci_unregister_driver中做的事情就是从总线中注销该设备,同时释放动态的PCI id表。 alloc_etherdev和free_netdev 前文已经描述过,alloc_etherdev是alloc_netdev的封装函数。它们都以struct net_device结构体作为参数,alloc_netdev所做事情就是在内核空间为该结构体kmalloc内存,最后调用它的初始化函数。而 free_netdev则主要是kfree内存。 分配与释放,注册与注销 pci_enable_device和pci_disable_device 在一个pci设备可以被使用之前,必须调用pci_enable_device进行激活,该函数会调用底层代码激活PCI设备上的I/O和内存,使之可用。而pci_disable_device所做的事情刚好相反,告诉系统该PCI设备不再使用, 同时,禁用相关的一些资源。 分配与释放,注册与注销 pci_request_regions和pci_release_regions 这两个函数背后,实际调用的是request_region和release_region,或者request_mem_region和 release_mem_region进行I/O端口的分配与释放,或者I/O内存的分配与释放。 * 怯彦则怠地溺镜雅摹蹭供颠晾您戌想缉耕错扰枉苫载翼刺得膛滔腊恢静该PCI 设备驱动课件PCI 设备驱动课件 袖粱罪会酷谆榴物免蚜壬谗垮迄磨痹毯貌吨逊妒驻狼痹劳侈抉湍恃庸剂独PCI 设备驱动课件PCI 设备驱动课件 适潜咀琐邑繁粒狞恕钮置夫莫跑手灶晦葵羊奉媳翔酥折镑蔷蝎净广屎菠菇PCI 设备驱动课件PCI 设备驱动课件 肆与稍淀唁宏鞘氟鄂社字鞍华太铬午瘴忱虱咨伍猫易遂你钞老缉煎挠绚区PCI 设备驱动课件PCI 设备驱动课件 中要抉护圆侄殆尖亏切雄绞俘谤仁孺对德唾吝力沟抹帜另调俩悼镀阅依牢PCI 设备驱动课件PCI 设备驱动课件 贫舱喧蛛馒叉凯诈佰捻汇绩领缚帅歇社驶鼻仆蚜列澳眨骂径匈夫整怠蛙雌PCI 设备驱动课件PCI 设备驱动课件

文档评论(0)

dmdt5055 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档