⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 geiifdrvlib.h

📁 intel 82543 千兆网卡 vxworks驱动源码
💻 H
字号:
/* IFDrvLib.h - if card Library header.*//* Copyright 1990-2003 Wind River Systems, Inc. *//*modification history--------------------01a,18jan06,weng  create ifLib header file.*/#ifndef __INCifDrvLibh#define __INCifDrvLibh/* includes */#ifdef __cplusplusextern "C" {#endif#include <semLib.h>/* defines */#define MAXIFPHYADDRLEN 16       /* PHY address length */#define MAXIFNAMELEN 16          /* if dirver's name length */#define IF_DRV_DEV_NUM_MAX    32/* if driver's status. */#define IF_DRV_LOADED    0x01    /* driver is up */#define IF_DRV_RUNNING   0x02    /* driver is running  */#define DEV_ALL          0xFF    /* action to all device in a if card  *//* if driver's packet process call back routine */typedef void (*PKT_PROC_FUN )(void* , char*, void*, int);/* if driver's TX sem take and give */#define IF_DRV_TX_SEM_TAKE(pDrvObj,tmout) \        (semTake ((pDrvObj)->txSem,tmout))#define IF_DRV_TX_SEM_GIVE(pDrvObj) \        (semGive ((pDrvObj)->txSem))#define IF_DRV_HADDR(drvObj)                                                 \        (&(drvObj.ifPhysAddress.phyAddress[0]))#define IF_DRV_HADDR_LEN(drvObj)                                             \        (drvObj.ifPhysAddress.addrLength)/* multicast address library errorno defines */#define ENETMULTIRESET  0          /*reset multi address */#define ENETMULTIINVAL  1          /*invalid multi address */#define ENETMULTIEXIST  2          /*have exist this multi address */#define ENETMULTINOBUF  3          /*no memory for this multi address */#define ENETMULTIXIO    4          /*not exist this multi address *//* if driver library ioctrl options *//* MAC address structure */typedef struct tagIfPhyAddres{    long           addrLength;    unsigned char  phyAddress [MAXIFPHYADDRLEN];} IF_PHY_ADDR;/* multicast address structure */typedef struct multi_addr{    struct multi_addr * pNext;    unsigned char addr[6];    unsigned char reserved[2]; /* for byte align */}MULTI_ADDR;typedef struct{    int len;            /* Length of table in bytes. */    char *pTable;       /* Pointer to entries. */} MULTI_ADDR_TABLE;/* interface card device driver strutrue base class. */typedef struct drv_obj{    int slot;                       /* interface cards slot number */    char name[MAXIFNAMELEN];        /* if name */    int flag;                       /* if status */    SEM_ID txSem;                   /* if Transmitter semaphore. */    IF_PHY_ADDR ifPhysAddress;      /* if mac addres */    MULTI_ADDR * ifMultiAddPtr;     /* if mulitcast addres */    int   nMulti;                   /* multicast address number */    LIST multiList;                 /* Head of the multicast address list */    PKT_PROC_FUN pktProcessCallBack;/* FWD's packet call back process function */    struct if_funcs  *pFuncTable;   /* if function table */    void *  net;                    /* net ??? */} DRV_OBJ;/* if dirver's interface function */typedef struct if_funcs{    STATUS (*start) (DRV_OBJ *);       /* driver's start function */    STATUS (*stop) (DRV_OBJ *);        /* driver's stop function */    STATUS (*unload) (DRV_OBJ *);      /* driver's unload function */    int (*ioctl) (DRV_OBJ * , int cmd, UINT8 *pData);                /* ioctl */    int (*capacity) (DRV_OBJ *);                                     /* driver capacity */    STATUS (*send) (DRV_OBJ *, char *pBuf, int len, char *pOrig);    /* data send */    STATUS (*mCastAddrAdd) (DRV_OBJ *, char *);    /* multicase address add */    STATUS (*mCastAddrDel) (DRV_OBJ *, char *);    /* multicase address del */    STATUS (*mCastAddrGet) (DRV_OBJ *, MULTI_ADDR_TABLE *);    /* multicase address get */} IF_FUNCS;/* if card structure */typedef struct if_object{    struct if_object *pNext;      /* double list node */    struct if_object *pPrev;    int   slot;                   /* slot number */    int   drvObjNum;              /* if DRV_OBJ num in the pDevListH list */    char  objName[MAXIFNAMELEN];  /* obj name */    DRV_OBJ *devIndex[IF_DRV_DEV_NUM_MAX];  /* DRV_OBJ 's search index */    DRV_OBJ *pDevListH;           /* driver list header*/    DRV_OBJ *pDevListT;           /* driver list tail*/} IF_OBJ;/* if driver's identification routine type */typedef BOOL (*IF_IDENTIFY_FUNPTR )(int);/* if driver's load routine type */typedef DRV_OBJ *(*IF_LOAD_FUNPTR )(int,int);/* if driver register structure */typedef struct if_reg_entry{    char ifName[MAXIFNAMELEN];      /* if name */    IF_IDENTIFY_FUNPTR ifIdentify;  /* if card identify function ptr */    IF_LOAD_FUNPTR ifLoad;          /* if card load function ptr */    BOOL           inuse;           /* flag indicate used or not */} IF_REG_ENTRY;#if 0#define IDENT(i, slot)          /* identify dirver */ \        ((ifDrvRegTbl[i].ifIdentify)(slot))#define LOAD(i, slot, dev)     /* load dirver */ \        ((ifDrvRegTbl[i].ifLoad)(slot, dev))/* function declarations */extern STATUS IFDrvLibInit(int drvNumMax);extern STATUS IFDrvRegister(const char *name,IF_IDENTIFY_FUNPTR IDFunPtr, IF_LOAD_FUNPTR loadFunPtr);extern IF_OBJ *IFObjFind(int slot);extern BOOL  IFDrvExist(int slot, int dev);extern DRV_OBJ *IFDrvFind(int slot, int dev);extern STATUS IFDrvNum(int slot, int *pDevNum);extern STATUS IFDrvLoad(int slot, int dev);extern STATUS IFDrvLoadAll(int slot);extern STATUS IFDrvStart(int slot, int dev);extern STATUS IFDrvStartAll(int slot);extern STATUS IFDrvStop(int slot, int dev);extern STATUS IFDrvStopAll(int slot);extern STATUS IFDrvCapacity(int slot, int dev, int *cap);extern STATUS IFDrvUnload(int slot, int dev);extern STATUS IFDrvUnloadAll(int slot);extern STATUS IFDrvIoctl(int slot, int dev, int cmd, UINT8 *pData);extern STATUS IFDrvIoctlAll(int slot, int cmd, UINT8 *pData);extern STATUS IFDrvSend(int slot, int dev, char *pBuf, int len, char *pOrig);extern STATUS IFDrvSendAll(int slot, char *pBuf, int len, char *pOrig);extern void __drvObjListAdd(DRV_OBJ **ppHead, DRV_OBJ **ppTail, DRV_OBJ *pNew);extern void __drvObjDel(DRV_OBJ **ppHead, DRV_OBJ **ppTail, const DRV_OBJ *pDel);extern int IFEnetMultiAdd(DRV_OBJ * pDrvObj, char* pAddress);extern int IFEnetMultiDel(DRV_OBJ * pDrvObj, char* pAddress);extern int IFEnetMultiGet(DRV_OBJ * pDrvObj, MULTI_ADDR_TABLE* pTable);extern int IFEnetMultiShow(DRV_OBJ * pDrvObj);#endif#ifdef __cplusplus}#endif#endif /* __INCifDrvLibh */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -