亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? secend.c

?? ARM板驅(qū)動(dòng)程序源代碼
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/* secEnd.c - END style ATMEL AAT91RM9200 Ethernet network interface driver  */#include "vxWorks.h"#include "intLib.h"#include "errno.h"#include "net/mbuf.h"#include "net/unixLib.h"#include "net/protosw.h"#include "sys/socket.h"#include "sys/ioctl.h"#include "net/route.h"#include "cacheLib.h"#include "logLib.h"#include "netLib.h"#include "stdio.h"#include "stdlib.h"#include "sysLib.h"#include "taskLib.h"#include "net/systm.h"#include "sys/times.h"#include "net/if_subr.h"#undef  ETHER_MAP_IP_MULTICAST#include "etherMultiLib.h"#include "end.h"#include "semLib.h"#define END_MACROS#include "endLib.h"#include "miiLib.h"#include "lstLib.h"#include "config.h"#include "drv/end/secEnd.h"/* Defines */#undef  DEBUG_TRACE/*#define DEBUG_LOG(x, p1, p2, p3, p4, p5, p6) \        logMsg(x, (int)(UINT32)(p1), (int)(UINT32)(p2), (int)(UINT32)(p3), (int)(UINT32)(p4), (int)(UINT32)(p5), (int)(UINT32)(p6))*//* Forward Function Declarations */LOCAL STATUS    secEndInitParse(DRV_CTRL *pDrvCtrl, char *initString);LOCAL STATUS    secEndInitMem(DRV_CTRL *pDrvCtrl);LOCAL STATUS    secEndUnload(DRV_CTRL *pDrvCtrl);LOCAL STATUS    secEndStart(DRV_CTRL *pDrvCtrl);LOCAL STATUS    secEndStop(DRV_CTRL *pDrvCtrl);LOCAL int       secEndIoctl(DRV_CTRL *pDrvCtrl, int cmd, caddr_t data);LOCAL STATUS    secEndSend(DRV_CTRL *pDrvCtrl, M_BLK_ID pMblk);LOCAL STATUS    secEndMCastAddrAdd(DRV_CTRL *pDrvCtrl, UCHAR *pAddr);LOCAL STATUS    secEndMCastAddrDel(DRV_CTRL *pDrvCtrl, UCHAR *pAddr);LOCAL STATUS    secEndMCastAddrGet(DRV_CTRL *pDrvCtrl, MULTI_TABLE *pTable);LOCAL STATUS    secEndPollSend(DRV_CTRL *pDrvCtrl, M_BLK_ID pMblk);LOCAL STATUS    secEndPollReceive(DRV_CTRL *pDrvCtrl, M_BLK_ID pMblk);/* Declare our function table. This is static across all driver instances. */LOCAL NET_FUNCS endFuncTable = {    (FUNCPTR)secEndStart,                                   /* start func. */    (FUNCPTR)secEndStop,                                    /* stop func. */    (FUNCPTR)secEndUnload,                                  /* unload func. */    (FUNCPTR)secEndIoctl,                                   /* ioctl func. */    (FUNCPTR)secEndSend,                                    /* send func. */    (FUNCPTR)secEndMCastAddrAdd,                            /* multicast add func. */    (FUNCPTR)secEndMCastAddrDel,                            /* multicast delete func. */    (FUNCPTR)secEndMCastAddrGet,                            /* multicast get fun. */    (FUNCPTR)secEndPollSend,                                /* polling send func. */    (FUNCPTR)secEndPollReceive,                             /* polling receive func. */    endEtherAddressForm,                                    /* put address info into a NET_BUFFER */    (FUNCPTR)endEtherPacketDataGet,                         /* get pointer to data in NET_BUFFER */    (FUNCPTR)endEtherPacketAddrGet                          /* Get packet addresses */};/********************************************************************************* secEndLoad - initialize the driver and device** This routine initializes the driver and the device to the operational state.* All of the device specific parameters are passed in the initString.** The string contains the target specific parameters like this:** "unit number:"** RETURNS: An END object pointer or NULL on error.*/END_OBJ* secEndLoad(    char *initString                                        /* parameter string */    ){    DRV_CTRL *pDrvCtrl;                                     /* pointer to DRV_CTRL structure */    UCHAR enetAddr[SEC_END_ADDR_LEN];                       /* ethernet address */#ifdef  DEBUG_TRACE    printf("secEnd Load, %s\n", initString);#endif  /* DEBUG_TRACE */    if (initString == NULL)    {        printf("secEnd Error: NULL parameter string\n");        return NULL;    }    if (initString[0] == 0)    {        bcopy((char *)SEC_END_DEV_NAME, (char *)initString, SEC_END_DEV_NAME_LEN);#ifdef  DEBUG_TRACE        printf("secEnd Load, %s\n", initString);#endif  /* DEBUG_TRACE */        return NULL;    }    /* Allocate the device structure. */    pDrvCtrl = (DRV_CTRL *)calloc(sizeof(DRV_CTRL), 1);    if (pDrvCtrl == NULL)    {        printf("secEnd Error: Failed to allocate DRV_CTRL\n");        return (NULL);    }    while (1)    {        /* Parse InitString. */        if (secEndInitParse(pDrvCtrl, initString) != OK)        {            break;        }        /* Memory initialization. */        if (secEndInitMem(pDrvCtrl) != OK)        {            break;        }        /* Initialize physical device. */        if (DRV_INIT(pDrvCtrl) != OK)        {            break;        }        /* Initialize END object. */        if (END_OBJ_INIT(                &pDrvCtrl->endObj,                (DEV_OBJ *)pDrvCtrl,                SEC_END_DEV_NAME,                pDrvCtrl->unit,                &endFuncTable,                SEC_END_DEV_DESCRIPTION                ) == ERROR)        {            printf("secEnd%d Error: Failed to initialize END_OBJ\n", pDrvCtrl->unit);            break;        }        /* Get ethernet hardware address. */        sysSecEnetAddrGet(pDrvCtrl->unit, enetAddr);        /* Initialize MIB. */        if (END_MIB_INIT(                &pDrvCtrl->endObj,                M2_ifType_ethernet_csmacd,                 enetAddr,                SEC_END_ADDR_LEN,                ETHERMTU,                pDrvCtrl->phyInfo.phySpeed                ) == ERROR)        {            printf("secEnd%d Error: Failed to initialize END_MIB\n", pDrvCtrl->unit);            break;        }        /* Mark the device ready. */        END_OBJ_READY(&pDrvCtrl->endObj, IFF_NOTRAILERS | IFF_MULTICAST | IFF_BROADCAST);        return (&pDrvCtrl->endObj);    }    secEndUnload(pDrvCtrl);    return NULL;}/******************************************************************************** secEndUnload - unload a driver from the system** This function first brings down the device, and then frees any stuff that was* allocated by the driver in the load function.** RETURNS: OK or ERROR.*/STATUS secEndUnload(    DRV_CTRL *pDrvCtrl                                      /* pointer to DRV_CTRL structure */    ){#ifdef  DEBUG_TRACE    printf("secEnd%d Unload\n", pDrvCtrl->unit);#endif  /* DEBUG_TRACE */    if (pDrvCtrl == NULL)    {        return ERROR;    }    /* Uninitialize END object. */    END_OBJ_UNLOAD(&pDrvCtrl->endObj);    /* Free buffer descriptor pool if necessary. */  /*  if (pDrvCtrl->pBdArea != NULL)    {        cacheDmaFree(pDrvCtrl->pBdArea);    }*/    /* Free cluster pool if necessary. */    if (pDrvCtrl->pClArea != NULL)    {        cacheDmaFree(pDrvCtrl->pClArea);        pDrvCtrl->pClArea = 0 ;    }    /* Free mBlk/clBlk pool if necessary. */    if (pDrvCtrl->pMblkArea != NULL)    {        free(pDrvCtrl->pMblkArea);        pDrvCtrl->pMblkArea = 0 ;    }    /* Free netPool if necessary. */    if (pDrvCtrl->endObj.pNetPool != NULL)    {        free(pDrvCtrl->endObj.pNetPool);    }    /* Free the device structure. */    cfree((char *)pDrvCtrl);    return OK;}/********************************************************************************* secEndStart - start the device** This function calls BSP functions to connect interrupts and start the device* running in interrupt mode.** RETURNS: OK or ERROR**/LOCAL STATUS secEndStart(    DRV_CTRL *pDrvCtrl                                      /* pointer to DRV_CTRL structure */    ){#ifdef  DEBUG_TRACE    printf("secEnd%d Start\n", pDrvCtrl->unit);#endif  /* DEBUG_TRACE */    /* Mark the interface as up. */    END_FLAGS_SET(&pDrvCtrl->endObj, (IFF_UP | IFF_RUNNING));    return DRV_START(pDrvCtrl);}/********************************************************************************* secEndStop - stop the device** This function calls BSP functions to disconnect interrupts and stop the device* from operating in interrupt mode.** RETURNS: OK or ERROR.*/LOCAL STATUS secEndStop(    DRV_CTRL *pDrvCtrl                                      /* pointer to DRV_CTRL structure */    ){#ifdef  DEBUG_TRACE    printf("secEnd%d Stop\n", pDrvCtrl->unit);#endif  /* DEBUG_TRACE */    /* Mark the interface as down. */    END_FLAGS_CLR(&pDrvCtrl->endObj, (IFF_UP | IFF_RUNNING));    return DRV_STOP(pDrvCtrl);}/********************************************************************************* secEndIoctl - the driver I/O control routine** Process an ioctl request.** RETURNS: A command specific response, usually OK or ERROR.*/LOCAL int secEndIoctl(    DRV_CTRL *pDrvCtrl,                                     /* pointer to DRV_CTRL structure */    int cmd,                                                /* command to process */    caddr_t data                                            /* pointer to data */    ){    int error = OK;    END_OBJ *pEndObj = &pDrvCtrl->endObj;    long value;#ifdef  DEBUG_TRACE    printf("secEnd%d Ioctl: ", pDrvCtrl->unit);#endif  /* DEBUG_TRACE */    switch (cmd)    {    case EIOCSADDR:#ifdef  DEBUG_TRACE        printf("EIOCSADDR\n");#endif  /* DEBUG_TRACE */        /* Stop the device. */        DRV_STOP(pDrvCtrl);        /* Save the enet address. */        bcopy ((char *)data, END_HADDR(pEndObj), SEC_END_ADDR_LEN);        /* Program the individual enet address. */        error = DRV_ADDR_SET(pDrvCtrl);        /* Restart the device. */        DRV_START(pDrvCtrl);        break;    case EIOCGADDR:#ifdef  DEBUG_TRACE        printf("EIOCGADDR\n");#endif  /* DEBUG_TRACE */        /* Retrieve the enet address. */        bcopy (END_HADDR(pEndObj), (char *)data, SEC_END_ADDR_LEN);        break;    case EIOCSFLAGS:#ifdef  DEBUG_TRACE        printf("EIOCSFLAGS\n");#endif  /* DEBUG_TRACE */        value = (long)data;        if (value < 0)        {            value = -value;            value--;            END_FLAGS_CLR(pEndObj, value);        }        else        {            END_FLAGS_SET(pEndObj, value);        }        /* Set device flags. */        error = DRV_FLAGS_SET(pDrvCtrl);        break;    case EIOCGFLAGS:#ifdef  DEBUG_TRACE        printf("EIOCGFLAGS\n");#endif  /* DEBUG_TRACE */        /* Get device flags. */        *(long *)data = END_FLAGS_GET(pEndObj);        break;    case EIOCMULTIADD:#ifdef  DEBUG_TRACE        printf("EIOCMULTIADD\n");#endif  /* DEBUG_TRACE */        /* Add multicast address. */        error = secEndMCastAddrAdd(pDrvCtrl, (UCHAR *)data);        break;    case EIOCMULTIDEL:#ifdef  DEBUG_TRACE        printf("EIOCMULTIDEL\n");#endif  /* DEBUG_TRACE */        /* Delete multicast address. */        error = secEndMCastAddrDel(pDrvCtrl, (UCHAR *)data);        break;    case EIOCMULTIGET:#ifdef  DEBUG_TRACE        printf("EIOCMULTIGET\n");#endif  /* DEBUG_TRACE */        /* Retrieve a table of multicast addresses. */        error = secEndMCastAddrGet(pDrvCtrl, (MULTI_TABLE *)data);        break;    case EIOCPOLLSTART:#ifdef  DEBUG_TRACE        printf("EIOCPOLLSTART\n");#endif  /* DEBUG_TRACE */        /* Start polling mode. */        error = DRV_POLL_START(pDrvCtrl);        break;    case EIOCPOLLSTOP:#ifdef  DEBUG_TRACE        printf("EIOCPOLLSTOP\n");#endif  /* DEBUG_TRACE */

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美午夜在线观看| 2020国产成人综合网| 国产黄色91视频| 日本91福利区| 亚洲成年人影院| 中文字幕免费不卡| 国产性色一区二区| 国产欧美日韩精品a在线观看| 精品国产伦一区二区三区观看体验 | 欧美日韩国产高清一区二区三区| 亚洲福中文字幕伊人影院| 亚洲高清视频在线| 蜜臀av性久久久久蜜臀aⅴ| 日韩av成人高清| 日韩高清不卡一区二区| 麻豆91免费看| 石原莉奈在线亚洲三区| 婷婷国产v国产偷v亚洲高清| 午夜欧美大尺度福利影院在线看| 日韩精品久久久久久| 亚洲国产精品嫩草影院| 亚洲激情校园春色| 午夜电影久久久| 精品一区二区三区视频在线观看 | 久久精品夜色噜噜亚洲a∨| 久久品道一品道久久精品| 国产精品久久久久永久免费观看 | 日韩一级黄色大片| 国产婷婷色一区二区三区| 亚洲精品免费一二三区| 日韩av二区在线播放| 国产一区二区导航在线播放| 成人av集中营| 777奇米成人网| 国产精品日日摸夜夜摸av| 亚洲一二三四在线| 国产sm精品调教视频网站| 欧美专区日韩专区| 久久亚洲精品国产精品紫薇| 最新热久久免费视频| 亚洲高清免费视频| 国产成人亚洲综合a∨婷婷图片| 欧美色综合天天久久综合精品| 亚洲精品在线观| 无吗不卡中文字幕| 国产主播一区二区三区| 欧美在线免费观看视频| 久久久综合激的五月天| 午夜私人影院久久久久| av午夜精品一区二区三区| 制服丝袜在线91| 一区二区三区中文字幕| 国产精品白丝jk白祙喷水网站| 欧美激情综合五月色丁香小说| 视频在线在亚洲| 91丝袜美腿高跟国产极品老师| 国产日韩欧美精品一区| 亚洲国产日韩综合久久精品| 久久精品国产99久久6| 欧美性受xxxx黑人xyx性爽| 久久久久综合网| 丝袜美腿亚洲一区二区图片| 成人91在线观看| 精品国产123| 久久超碰97中文字幕| 6080日韩午夜伦伦午夜伦| 亚洲少妇中出一区| 成人av电影在线网| 国产精品久久久久久久裸模| 久久精品国产亚洲aⅴ| 91国产成人在线| 亚洲激情成人在线| 一本到一区二区三区| 18欧美亚洲精品| 不卡的av网站| www国产成人免费观看视频 深夜成人网 | 欧美xxxxx牲另类人与| 日韩av一二三| 欧美老肥妇做.爰bbww| 无吗不卡中文字幕| 制服丝袜成人动漫| 青青青爽久久午夜综合久久午夜| 欧美日本一区二区三区| 视频一区在线视频| 欧美电影免费提供在线观看| 久久不见久久见免费视频7| 91.xcao| 久久超碰97中文字幕| 久久亚洲综合av| 99精品在线观看视频| 亚洲一区二区欧美日韩| 99久久99久久精品国产片果冻| 国产精品视频看| 99久久综合99久久综合网站| 亚洲欧美偷拍三级| 欧美日韩国产小视频| 精品一区二区三区不卡| 久久久亚洲精品一区二区三区| 秋霞av亚洲一区二区三| 国产视频视频一区| 色天使色偷偷av一区二区| 丝袜a∨在线一区二区三区不卡| 精品国产电影一区二区 | 亚洲精品成人在线| 欧美日韩国产综合久久| 国产米奇在线777精品观看| 国产精品视频看| 91麻豆精品国产91久久久资源速度| 蜜臀av国产精品久久久久| 久久久91精品国产一区二区精品| 高清国产午夜精品久久久久久| 成人欧美一区二区三区黑人麻豆| 99久久精品情趣| 日韩电影在线一区| 一区在线中文字幕| 日韩三级在线观看| 不卡视频一二三| 麻豆精品蜜桃视频网站| 26uuu另类欧美| 在线欧美一区二区| 国产成人自拍在线| 奇米精品一区二区三区在线观看一 | 欧美日韩夫妻久久| 福利一区福利二区| 日本中文字幕不卡| 亚洲精品成人精品456| 中文字幕在线观看一区| 欧美裸体bbwbbwbbw| 成人精品高清在线| 精品无人码麻豆乱码1区2区 | 国产九色sp调教91| 日韩成人精品视频| 亚洲大片在线观看| 亚洲天堂网中文字| 国产欧美日韩在线| 日韩欧美区一区二| 欧美三区在线观看| 播五月开心婷婷综合| 狠狠色狠狠色综合| 麻豆久久一区二区| 五月激情综合婷婷| 日韩精品一二三四| 亚洲高清免费视频| 亚洲午夜久久久久中文字幕久| 成人免费一区二区三区在线观看| 久久久精品黄色| 久久精品夜夜夜夜久久| 欧美精品一区二区三| 7777女厕盗摄久久久| 欧美熟乱第一页| 在线观看国产一区二区| 日本久久精品电影| 色婷婷av一区| 欧美在线观看一区| 欧美日韩国产综合久久| 在线视频欧美区| 欧美日韩国产首页| 欧美日韩一区不卡| 欧美一卡二卡在线| 欧美一区二区三区的| 精品日韩欧美在线| xfplay精品久久| 国产精品理论片在线观看| 综合久久国产九一剧情麻豆| 日韩美女啊v在线免费观看| 亚洲免费伊人电影| 亚洲二区在线视频| 日产精品久久久久久久性色| 日韩激情在线观看| 国产一区二区在线视频| 精品国产乱码久久久久久蜜臀| 国产精品二区一区二区aⅴ污介绍| 亚洲欧美日韩一区二区三区在线观看| 亚洲黄一区二区三区| 视频一区欧美精品| 国产真实乱子伦精品视频| 成人免费毛片高清视频| 欧美三级资源在线| 欧美大胆人体bbbb| 综合久久一区二区三区| 日韩福利视频导航| 国产成人午夜片在线观看高清观看| 成人黄色777网| 欧美调教femdomvk| 欧美变态口味重另类| 中文字幕一区二区三区色视频| 亚洲午夜一区二区| 国产在线精品视频| 色婷婷av一区二区三区大白胸| 91麻豆精品国产91久久久资源速度| 国产午夜精品一区二区三区视频| 一区精品在线播放| 免费成人性网站| 91论坛在线播放| 欧美电影免费观看高清完整版在线 | 欧美精品xxxxbbbb| 国产欧美一区二区三区鸳鸯浴| 亚洲日本护士毛茸茸| 紧缚捆绑精品一区二区| 91麻豆自制传媒国产之光|