网络设备支持接口

网络设备支持接口

ID:42717967

大小:23.98 KB

页数:7页

时间:2019-09-21

网络设备支持接口_第1页
网络设备支持接口_第2页
网络设备支持接口_第3页
网络设备支持接口_第4页
网络设备支持接口_第5页
资源描述:

《网络设备支持接口》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、网络设备支持驱动程序的支持函数名功能函数形成参数描述init_etherdev注册以太网设备tructnet_device*init_etherdev(structnet_device*dev,intsizeof_priv)dev为要填充的以太网设备结构,或者要分配一个新的结构时为NULL,sizeof_priv是为这个以太网设备要分配的额外私有结构的大小。用以太网的通用值填充这个结构的域。如果传递过来的dev为NULL,则构造一个新的结构,包括大小为sizeof_priv的私有数据区。强制将这个私有数据区在32字节(不是位)上对齐。d

2、ev_add_pack增加数据包处理程序voiddev_add_pack(structpacket_type*pt)pt为数据包类型把一个协议处理程序加到网络栈,把参数传递来的&packet_type链接到内核链表中。dev_remove_pack删除数据包处理程序voiddev_remove_pack(structpacket_type*pt)pt为数据包类型删除由dev_add_pack曾加到内核的协议处理程序。把&packet_type从内核链表中删除,一旦该函数返回,这个结构还能再用。__dev_get_by_name根据名字找

3、设备structnet_device*__dev_get_by_name(constchar*name);name为要查找的名字根据名字找到一个接口。必须在RTNL信号量或dev_base_lock锁的支持下调用。如果找到这个名字,则返回指向设备的指针,如果没有找到,则返回NULL。引用计数器并没有增加,因此调用者必须小心地持有锁。dev_get_by_name根据名字找设备structnet_device*dev_get_by_name(constchar*name)name为要查找的名字根据名字找到一个接口。这个函数可以在任何上下文

4、中调用并持有自己的锁。返回句柄的引用计数增加,调用者必须在其不使用时调用dev_put释放它,如果没有匹配的名字,则返回NULL。dev_get测试设备是否存在intdev_get(constchar*name)name为要测试的名字测试名字是否存在。如果找到则返回真。为了确保在测试期间名字不被分配或删除,调用者必须持有rtnl信号量。这个函数主要用来与原来的驱动程序保持兼容。__dev_get_by_index根据索引找设备structnet_device*__dev_get_by_index(intifindex)ifindex为设

5、备的索引根据索引搜索一个接口。如果没有找到设备,则返回NULL,找到则返回指向设备的指针。该设备的引用计数没有增加,因此调用者必须小心地关注加锁,调用者必须持有RTNL信号量或dev_base_lock锁。dev_get_by_index根据名字找设备structnet_device*dev_get_by_index(intifindex)ifindex为设备的索引根据索引搜索一个接口。如果没有找到设备,则返回NULL,找到则返回指向设备的指针。所返回设备的引用计数加1,因此,在用户调用dev_put释放设备之前,返回指针是安全的。de

6、v_alloc_name为设备分配一个名字intdev_alloc_name(structnet_device*dev,constchar*name)dev为设备,name为格式化字符串。传递过来一个格式化字符串,例如ltd,该函数试图找到一个合适的id。设备较多时这是很低效的。调用者必须在分配名字和增加设备时持有dev_base或rtnl锁,以避免重复。返回所分配的单元号或出错返回一个复数。dev_alloc分配一个网络设备和名字structnet_device*dev_alloc(constchar*name,int*err)nam

7、e为格式化字符串,err为指向错误的指针传递过来一个格式化字符串,例如ltd,函数给该名字分配一个网络设备和空间。如果没有可用内存,则返回NULL。如果分配成功,则名字被分配,指向设备的指针被返回。如果名字分配失败,则返回NULL,错误的原因放在err指向的变量中返回。调用者必须在做这一切时持有dev_base或RTNL锁,以避免重复分配名字。netdev_state_change设备改变状态voidnetdev_state_change(structnet_device*dev)name为引起通告的设备当一个设备状态改变时调用该函数。

8、dev_load装入一个网络模块voiddev_load(constchar*name)name为接口的名字如果网络接口不存在,并且进程具有合适的权限,则这个函数装入该模块。如果在内核中模块的装入是不可用的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。