2009年2月3日星期二

vxworks 网络协议层:MUX:网络驱动

LOCAL NET_FUNCS netFuncs =

    {

    (FUNCPTR)fei82557Start,      /* start func. */   

    (FUNCPTR)fei82557Stop,       /* stop func. */

    (FUNCPTR)fei82557Unload,     /* unload func. */      

    (FUNCPTR)fei82557Ioctl,      /* ioctl func. */   

    (FUNCPTR)fei82557Send,        /* send func. */      

    (FUNCPTR)fei82557MCastAddrAdd,       /* multicast add func. */  

    (FUNCPTR)fei82557MCastAddrDel,       /* multicast delete func. */     

    (FUNCPTR)fei82557MCastAddrGet,       /* multicast get fun. */  

    (FUNCPTR)fei82557PollSend,       /* polling send func. */  

    (FUNCPTR)fei82557PollReceive,        /* polling receive func. */

    endEtherAddressForm,      /* put address info into a NET_BUFFER. */

    endEtherPacketDataGet,   /* get pointer to data in NET_BUFFER. */

    endEtherPacketAddrGet     /* Get packet addresses. */

}; 

 

/*

* NET_FUNCS - driver function table

 *

 * This is a table that is created, one per driver, to hold all the

 * function pointers for that driver.  In this way we can have only one

 * instance to this structer, but one pointer per netDevice structure.

 */

 

typedef struct net_funcs

    {

    STATUS (*start) (END_OBJ*);        /* Driver's start func. */

    STATUS (*stop) (END_OBJ*);         /* Driver's stop func. */

    STATUS (*unload) (END_OBJ*);       /* Driver's unload func. */

    int (*ioctl) (END_OBJ*, int, caddr_t);    /* Driver's ioctl func. */

    STATUS (*send) (END_OBJ* , M_BLK_ID);     /* Driver's send func. */

    STATUS (*mCastAddrAdd) (END_OBJ*, char*); /* Driver's mcast add func. */

    STATUS (*mCastAddrDel) (END_OBJ*, char*); /* Driver's mcast delete func. */

    STATUS (*mCastAddrGet) (END_OBJ*, MULTI_TABLE*);

                                           /* Driver's mcast get fun. */

    STATUS (*pollSend) (END_OBJ*, M_BLK_ID);  /* Driver's polling send func. */

    STATUS (*pollRcv) (END_OBJ*, M_BLK_ID);   /* Driver's polling receive func. */

    M_BLK_ID (*formAddress) (M_BLK_ID, M_BLK_ID, M_BLK_ID, BOOL);

                                           /* Driver's addr formation func. */

    STATUS (*packetDataGet) (M_BLK_ID, LL_HDR_INFO *);

                                           /* Driver's packet data get func. */

    STATUS (*addrGet) (M_BLK_ID, M_BLK_ID, M_BLK_ID, M_BLK_ID, M_BLK_ID);

                                           /* Driver's packet addr get func. */

    int (*endBind) (void*, void*, void*, long type);

                  /* information exchange between */

                  /* network service and network driver */

    } NET_FUNCS;

0 评论: