4 网络设备信息的统计
应用程序或者用户可以通过网络信息接口nICinfo工具来了解网络工作状态。信息的查询都是通过io-net来进行的。驱动程序必须维护相应的状态数据,方便io-net的查询。网络设备有一些共同的状态属性,如收到和发出的包的个数、发送错误的包的个数等,不同的网络设备还会具有不同的属性和状态,这些都可以在驱动程序中用数据结构详细列明。
需要维护的数据结构中,主要的是Nic_t,它包括四个子结构;
CustNicStats--网络信息入口;
EthernesStats_t--以太网状态;
GenStats_t--常用统计信息;
NetStats_t--网络信息(包含常用统计信息)。
以上是驱动程序需要维护的数据。当用户或应用程序要查询这些信息的时候,它们就通过Nicinfo工具对/dev/io-net/en0调用devctl()函数来取得网络信息。信息的取得是必须通过io-net来完成的,io-net对信息的查询则是通过调用io_net_register_funs_t结构中所指向的函数来取得信息的。例:
#include<syS/Nic.h>
int generic_eth_devctl(void *hdl,int dcmd,void *data,size_t size,int *ret)
{
Nic_t *nic=(Nic_t *)hdl;
int status;
status=EOK;
switch(dcmd){
case DCMD_IO_NET_NICINFO;
mEMCpy(data,nic,min(size,sizeof(Nic_t)));
break;
default:
status=ENOTSUP;
break;
}
return(status);
}
结语
网络设备的驱动是网络系统的最低层和最基础的模块,是如今嵌入式开发中首先要解决的问题之一。由于QNX具有微内核的特点,其网络设备驱动程序的开发不需要内核调试,更适合初学者掌握。本文对QNX操作系统及网络设备驱动程序的介绍,可以帮助读者对相关内容作初步了解。