热门关键词: 天然气供暖设备 百德电动工具 未安装任何音频设备 废旧塑料处理设备 110kv电缆生产设备 电池设备 vista音频输出设备
  IC库存(8958万) PDF资料(329万) IC价格 IC求购 资讯 技术资料
电子元器件搜索:
维库电子市场网是知名的电子元器件交易网站,为电子生产企业提供IC库存和技术资料查询服务。
相关专题
VxWorks网络协议栈初始化流程(3)
新闻出处: 发布时间:2007-11-01

/*
* mBlk, clBlk configuration table for network stack system pool.
* Used for network stack system structures such as routes, sockets,
* protocol control blocks, interface addresses, mulitcast addresses,
* and multicast routing entries.
*/
M_CL_CONFIG sysMclBlkConfig =
{
/*
no. mBlks no. clBlks memArea memSize
----------- ---------- ------- -------
*/
NUM_SYS_MBLKS, NUM_SYS_CL_BLKS, NULL, 0
};

/*

* network stack system cluster pool configuration table
* Used for network stack system structures such as routes, sockets,
* protocol control blocks, interface addresses, mulitcast addresses,
* and multicast routing entries.
*/
CL_DESC sysClDescTbl [] =
{
/*
clusterSize num memArea memSize
----------- ---- ------- -------
*/
{64, NUM_SYS_64, NULL, 0},
{128, NUM_SYS_128, NULL, 0},
{256, NUM_SYS_256, NULL, 0},
{512, NUM_SYS_512, NULL, 0},
};
int sysClDescTblNumEnt = (NELEMENTS(sysClDescTbl));
以上的常数定义在netBufLib.H中;
在目前的定义中:
系统内核的缓冲区有512个Mbuf,有256个Mclk;
网络协议的缓冲区有400个Mbuf,有330个Mclk;

在mbuf.H将mbuf重定义为mBlk;
#define mbuf mBlk

在mblk中实现了原来mbuf的定义;


八、IP协议栈初始化usrNetProtoInit ()流程
调用ipLibInit (&ipCfgParams)初始化IP ;
调用rawIpLibInit ()初始化原始IP;
调用rawLibInit ()初始化原始IP库;
调用ipFilterLibInit ()初始化IP过滤;
调用udpLibInit (&udpCfgParams)初始化UDP库;
调用udpShowInit ()初始化UDP显示;
调用tcpLibInit (&tcpCfgParams)初始化TCP库;
调用tcpShowInit ()初始化TCP显示;
调用icmpLibInit (&icmpCfgParams);初始化ICMP;
调用icmpShowInit ()初始化ICMP显示;
调用igmpLibInit ();初始化IGMP;
调用igmpShowInit ();初始化IGMP显示;
调用mCastRouteLibInit ();初始化MCAST;
调用ospfLibInit ();初始化OSPF;
调用 ospfRegisterProtocol ();初始化OSPF注册;

netLibInit()流程:
调用 if ((netJobRing = rngCreate (JOB_RING_SIZE)) == (RING_ID) NULL)
panic ("netLibInit: couldn't create job ring\n");
初始化任务环;
调用 if (rebootHookAdd ((FUNCPTR) ifreset) == ERROR)
logMsg ("netLibInit: unable to add reset hook\n", 0, 0, 0, 0, 0, 0);
初始化复位钩子;
调用 semBInit (netTaskSemId, SEM_Q_PRIORITY, SEM_EMPTY);初始化信号量;
调用 splSemInit ();初始化信号量;
调用 mbinit ();初始化网络缓冲区;
调用 ifinit ();初始化接口;
调用addDomain (&inetdomain);添加域;
调用domaininit ()初始化域;
调用route_init ()初始化路由表;
调用routeIntInit ()初始化增强路由表;
调用mcastHashInit ();初始化多播HASH;
调用netTypeInit ()初始化网络类型;
调用 netTaskId = taskSpawn ("tNetTask", netTaskPriority,
netTaskOptions, netTaskStackSize,
(FUNCPTR) netTask, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
创建网络任务netTask;

netTask()网络任务流程
调用 semTake (netTaskSemId, WAIT_FOREVER);获取信号量;
调用rngIsEmpty (netJobRing)检查网络事件环是否有任务,如果有事件
则调用rngBufGet (netJobRing, (char *) &jobNode,sizeof (jobNode)) != sizeof (jobNode))获取事件,
并执行;
判断_netIsrMask中断字,确定是IP包到、还是ARP包到;
如果是IP包到,则调用ipintr ();处理IP包后清除_netIsrMask中断字;
如果是ARP包到,则调用arpintr ()处理ARP包后清除_netIsrMask中断字;

schednetisr()软中断流程:
获取软中断类型;
设置_netIsrMask软中断字;
调用semGive (netTaskSemId)激活网络处理任务。


TMSAppinit中调用muxIterateByName( SW_DEVICE_NAME, swIpAttach, NULL )添加相应的网络接口;
rc = ipAttach( unit0, EM_DEVICE_NAME );初始化外部网络接口

swIpAttach()的流程如下:
调用rc = ipAttach( unit, SW_DEVICE_NAME );初始化网络接口

ipAttach()流程:
调用 if (endFindByName (pDevice, unit) == NULL)确定是否有该END;
在ipDrvCtrl[]中获取一个空的空间放置IP驱动属性;
调用if((pDrvCtrl->tkFlag = muxTkDrvCheck(pDevice)) == TRUE)确定是否是NPT类型的END,
如果是则以后绑定用TK;
调用if((pDrvCtrl->pIpCookie = muxTkBind(pDevice, unit, ipTkReceiveRtn,绑定IP协议栈;
调用 bzero(pDrvCtrl->drvName,8);
strncpy(pDrvCtrl->drvName, pDevice,sizeof(pDrvCtrl->drvName)-1);
设置ipDrvCtrl[]域中成员名;
调用pIfp = (struct ifnet *) &pDrvCtrl->idr;获取ifNet;
设置ifNet;
调用muxIoctl(pDrvCtrl->pIpCookie, EIOCGFLAGS, (caddr_t)&flags)获取底层硬件标志;
调用muxIoctl(pDrvCtrl->pIpCookie, EIOCGMIB2233,(caddr_t)&pM2ID) == ERROR)获取底层硬件MIB变量;
设置ifnet;
确定接口类型,如果广播类型的接口,则设置接口广播标志;
调用if((pDrvCtrl->pArpCookie = muxTkBind(pDevice, unit,ipTkReceiveRtn,绑定ARP协议;
调用if (muxIoctl (pDrvCtrl->pIpCookie, EIOCGHDRLEN,
(caddr_t)&ifHdrLen)!= OK)获取底层硬件地址长度;
设置ifnet硬件地址长度;
设置ifnet的接口操作函数例程;
调用pIfp->if_resolve = muxAddrResFuncGet(pIfp->if_type, 0x800)获取该接口类型的地址解析函数;
调用if_attach (pIfp);将ifnet加入接口链表中;
调用pIfp->if_start = (FUNCPTR) ipTxStartup;初始化接口启动函数;
如果出错,则进行出错的善后处理。

关闭】【打印
友情链接:
© 2007 电子设备网 网站地图