从三个方面探讨VxWorks网络协议栈(1)(2)
2 MUX接口工作流程分析
MUX层作为独立的一个网络层有其自己的功能函数,但这些功能函数只是其上下两层通信的接口.网络协议层和网络驱动与MUX接口的调用关系如图3所示.
网络协议栈的协议提供下面的接口功能函数:
①stackShutdownRtn()
②stackError()
③stackRcvRtn()
④stackTxRestartRtn()
当MUX接口层需要与协议层相互通信时,就调用以上的功能函数.想要使网络协议层能够使用MUX,必须至少实现以上四个功能函数.
MUX则实现muxBind()、muxUnBind)、muxDevload()等等.网络协议层和网络驱动接口都要根据各自的需要使用MUX接入点.由于MUX是由系统提供的,不需要在应用时再进行额外的编码工作;只要在使用时,填入正确的参数即可.
例如在VxWorks中,muxDevLoad是这样定义的:
- END_OBJ*muxDevLoad
- int unit,
- END_OBJ**endLoad)(char*,void*),
- char* pInitString,
- BOOL loaning,
- void* pBSP
- )
网络协议栈MUX中的其它功能函数在muxLib.h文件中有详细定义.
网络接口的驱动程序要完成endLoad()、endUnload()、endSend()等功能函数.MUX使用这些功能函数来与网络驱动程序通信.当 编写或加载一个使用MUX的网络驱动程序时,必须实现图3中END的所有功能.这些功能函数都是针对具体的网络接口,即每一个网络驱动程序中都要有这些功 能函数.
评论暂时关闭