阅读:2671回复:3
请熟悉以太网驱动的朋友帮忙分析
在vxWorks下的驱动中,endLoad(char* initString)函数中有以下代码:END_OBJ_INIT (&pDrvCtrl->end, (DEV_OBJ *)pDrvCtrl, \"axend\",pDrvCtrl->unit, &axEndFuncTable, \"END axEnd Driver.\")
程序执行后用muxShow查看如下:Device: axend Unit: 0 Description: END axEnd Driver.这没有问题。 当用ifShow()查看时,如下 (unit number 0),发现设备名称没有了。而且,在所有用到设备名称的地方,比如ipAttach(),用ipAttach(0,\"\"),可以搭接tcp/ip协议,用ipAttach(0,\"axend\")则报没有这个设备的错。好像系统不知道设备的名字叫\"axend\".这是怎么回事呢? |
|
沙发#
发布于:2003-01-17 17:57
在ifShow()中用到了:
IMPORT struct ifnet *ifnet; /* list of all network interfaces */ 而muxShow()中用到LOCAL LIST endList; 两者不知道有无联系,可以跟踪一下。 提供一点信息,希望能有帮助。 |
|
|
板凳#
发布于:2003-01-19 12:39
多谢li_xc兄,不过我发现原来是在load函数中这句命令起作用,
if (initString[0] == \'\\0\') { bcopy((char *)AX_DEV_NAME, initString, AX_DEV_NAME_LEN); return (NULL); } 当把宏的内容放到initString中后,再用命令 END_OBJ_INIT (&pDrvCtrl->end, (DEV_OBJ *) DrvCtrl, AX_DEV_NAME, pDrvCtrl->unit, &axEndFuncTable, \"END axEnd Driver.\"). 问题解决了。至于为什么,不太清除。 |
|
地板#
发布于:2003-01-23 18:52
在muxload()中是需要initstring的,它用:分隔各个选项,其中第一项就是设备name。找设备就是根据这个设备名来的,没有这个名字当然就找不到。
|
|