介绍Linux设备驱动开发

源代码在线查看: ch17s13.html

软件大小: 847 K
上传用户: forchwei
关键词: Linux 设备 驱动开发
下载地址: 免注册下载 普通下载 VIP

相关代码

				
				
				17.13. 统计信息-Linux设备驱动第三版(中文版)-开发频道-华星在线
				
				
				 
				
				
				
				
				
				
				
				
				
				
				
				17.13. 统计信息
				
				
				上一页 
				第 17 章 网络驱动
				 下一页
				
				
				
				
				
				
				
				17.13. 统计信息
				驱动需要的最后一个方法是 get_stats. 这个方法返回一个指向给设备的统计的指针. 它的实现非常简单; 展示过的这个即便在几个接口由同一个驱动管理时都好用, 因为统计量驻留于设备数据结构内部.
				
				struct net_device_stats *snull_stats(struct net_device *dev)
				{
				    struct snull_priv *priv = netdev_priv(dev);
				    return &priv->stats;
				}
				
				需要返回有意义统计的真正工作是分布在整个驱动中的, 有各种成员量被更新. 下列列表展示了最有趣的结构 net_device_stats 中的成员:
				
				unsigned long rx_packets;
				
				unsigned long tx_packets;
				接口成功传送的进入和出去报文的总和.
				unsigned long rx_bytes;
				
				unsigned long tx_bytes;
				接口接收和发送的字节数.
				unsigned long rx_errors;
				
				unsigned long tx_errors;
				接收和发送的错误数. 报文发送可能出错的事情是没有结束的, net_device_stats 结构包括 6 个计数器给特定的接收错误以及有 5 个给发送错误. 完整列表看 <<linux/netdevice.h>. 如果可能, 你的驱动调用维护详细的错误统计, 因为它们是对系统管理员试图追踪问题的最大帮助.
				unsigned long rx_dropped;
				
				unsigned long tx_dropped;
				在接收和发送中丢失的报文数目. 当没有可用内存给报文数据时丢弃报文. tx_dropped 极少使用.
				unsigned long collisions;
				由于介质拥塞引起的冲突数目.
				unsigned long multicast;
				收到的多播报文数目.
				
				值得重复一下, get_stats 方法可以在任何时候调用 -- 即便在接口关闭时 -- 因此只要 net_device 结构存在驱动必须保持统计信息.
				
				
				
				
				
				
				上一页 
				上一级
				 下一页
				
				
				
				17.12. 定制 ioctl 命令 
				起始页
				 17.14. 多播
				
				
				
				
				 
							

相关资源