VxWorks上のデバイスの管理

2099 ワード

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
"
,pDevHdr->name,pDevHdr->drvNum); } }