VxWorks上设备的管理

VxWorks使用一个双向链表管理所有的设备,每个节点包含以下内容

typedef struct dev_hdr
{
    DL_NODE     node;       /* device linked list node */
    const char *name;       /* device name */
    int         drvRefCount;/* counter of concurrent driver invocations */
    UINT32      drvRefFlag; /* driver reference flags */
    void *      pDrvEntry;  /* driver table of this device */
    FUNCPTR     deleteDrv;  /* driver called upon device delete */
    short       drvNum;     /* driver number for this device */
} DEV_HDR;

下面的函数实现和devs相同的功能,打印出所有的设备的名字,以及设备使用的驱动号

#include<ioLib.h>

extern DL_LIST     iosDvList;
void listDev(void)
{
    DEV_HDR * pDevHdr;

    for (pDevHdr = (DEV_HDR *) DLL_FIRST (&iosDvList);
         pDevHdr != NULL;
         pDevHdr = (DEV_HDR *) DLL_NEXT (&pDevHdr->node))
        {
            printf("pDevHdr->name=%s,drvId=%d\n",pDevHdr->name,pDevHdr->drvNum);
        }
}

猜你喜欢

转载自blog.csdn.net/ambercctv/article/details/80280889