亚洲欧美第一页_禁久久精品乱码_粉嫩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):
        /* Stop polling mode. */        error = DRV_POLL_STOP(pDrvCtrl);        break;    case EIOCGMIB2:  #ifdef  DEBUG_TRACE        printf("EIOCGMIB2\n");#endif  /* DEBUG_TRACE */        /* Get MIB2 table. */        bcopy ((char *)&pEndObj->mib2Tbl, (char *)data, sizeof(pEndObj->mib2Tbl));        break;    case EIOCGNPT:#ifdef  DEBUG_TRACE        printf("EIOCGNPT\n");#endif  /* DEBUG_TRACE */        error = EINVAL;        break;    case EIOCGHDRLEN:#ifdef  DEBUG_TRACE        printf("EIOCGHDRLEN\n");#endif  /* DEBUG_TRACE */        *(long *)data = ENET_HDR_REAL_SIZ;        break;    default:#ifdef  DEBUG_TRACE        printf("\n");#endif  /* DEBUG_TRACE */        printf("secEnd%d Error: Unknown IOCTL command(0x%08X)\n", pDrvCtrl->unit, cmd);        error = EINVAL;        break;    }    return (error);}/********************************************************************************* secEndSend - the driver send routine** This routine takes a M_BLK_ID sends off the data in the M_BLK_ID. The buffer* must already have the addressing information properly installed in it. This is* done by a higher layer. The last arguments are a free routine to be called* when the device is done with the buffer and a pointer to the argument to pass* to the free routine.** RETURNS: OK, ERROR, or END_ERR_BLOCK.*/LOCAL STATUS secEndSend(    DRV_CTRL *pDrvCtrl,                                     /* pointer to DRV_CTRL structure */    M_BLK_ID pMblk                                          /* pointer to the mBlk/cluster pair */    ){    STATUS status;#ifdef  DEBUG_TRACE    printf("secEnd%d Send\n", pDrvCtrl->unit);#endif  /* DEBUG_TRACE */    END_TX_SEM_TAKE(&pDrvCtrl->endObj, WAIT_FOREVER);    /* Send data. */    status = DRV_SEND(pDrvCtrl, pMblk);    END_TX_SEM_GIVE(&pDrvCtrl->endObj);    return (status);}/******************************************************************************* secEndMCastAddrAdd - add a multicast address for the device** This routine adds a multicast address to whatever the driver is already* listening for. It then resets the address filter.** RETURNS: OK or ERROR.*/LOCAL STATUS secEndMCastAddrAdd(    DRV_CTRL *pDrvCtrl,                                     /* pointer to DRV_CTRL structure */    UCHAR *pAddr                                            /* address to be added */    ){    int retVal;#ifdef  DEBUG_TRACE    printf("secEnd%d MCastAddrAdd\n", pDrvCtrl->unit);#endif  /* DEBUG_TRACE */    /* Add multicast address to a multicast address list. */    retVal = etherMultiAdd(&pDrvCtrl->endObj.multiList, pAddr);    if (retVal == ENETRESET)    {        /* Program multicast address. */        retVal = DRV_MCAST_ADD(pDrvCtrl, pAddr);    }    return (retVal);}/******************************************************************************* secEndMCastAddrDel - delete a multicast address for the device** This routine removes a multicast address from whatever the driver is* listening for. It then resets the address filter.** RETURNS: OK or ERROR.*/LOCAL STATUS secEndMCastAddrDel(    DRV_CTRL *pDrvCtrl,                                     /* pointer to DRV_CTRL structure */    UCHAR *pAddr                                            /* address to be deleted */    ){    int retVal;#ifdef  DEBUG_TRACE    printf("secEnd%d MCastAddrDel\n", pDrvCtrl->unit);#endif  /* DEBUG_TRACE */    /* Delete multicast address from a multicast address list. */    retVal = etherMultiDel(&pDrvCtrl->endObj.multiList, pAddr);    while (retVal == ENETRESET)    {        /* Stop the device. */        DRV_STOP(pDrvCtrl);        /* Program multicast address. */        retVal = DRV_MCAST_DEL(pDrvCtrl, pAddr);        /* Restart the device. */        DRV_START(pDrvCtrl);    }    return (retVal);}/******************************************************************************* secEndMCastAddrGet - get the multicast address list for the device** This routine gets the multicast list of whatever the driver is already* listening for.** RETURNS: OK or ERROR.*/LOCAL STATUS secEndMCastAddrGet(    DRV_CTRL *pDrvCtrl,                                     /* pointer to DRV_CTRL structure */    MULTI_TABLE *pTable                                     /* table into which to copy addresses */    ){#ifdef  DEBUG_TRACE    printf("secEnd%d MCastAddrGet\n", pDrvCtrl->unit);#endif  /* DEBUG_TRACE */    /* Retrieve a table of multicast addresses from a driver. */    return (etherMultiGet(&pDrvCtrl->endObj.multiList, pTable));}/********************************************************************************* secEndPollSend - routine to send a packet in polled mode** This routine is called by a user to try and send a packet on the device.** RETURNS: OK upon success.  EAGAIN if device is busy.*/LOCAL STATUS secEndPollSend(    DRV_CTRL *pDrvCtrl,                                     /* pointer to DRV_CTRL structure */    M_BLK_ID pMblk                                          /* pointer to the mBlk/cluster pair */    ){#ifdef  DEBUG_TRACE    printf("secEnd%d PollSend\n", pDrvCtrl->unit);#endif  /* DEBUG_TRACE */    while (1)    {        if (pMblk == NULL)        {            printf("secEnd%d Error: NULL tansmit M_BLK\n", pDrvCtrl->unit);            break;        }        /* Send data. */        return DRV_POLL_SEND(pDrvCtrl, pMblk);    }    END_ERR_ADD(&pDrvCtrl->endObj, MIB2_OUT_ERRS, +1);    return EAGAIN;}/********************************************************************************* secEndPollReceive - routine to receive a packet in polled mode** This routine is called by a user to try and get a packet from the device.** RETURNS: OK upon success.  EAGAIN is returned when no packet is available.*/LOCAL STATUS secEndPollReceive(    DRV_CTRL *pDrvCtrl,                                     /* pointer to DRV_CTRL structure */    M_BLK_ID pMblk                                          /* pointer to the mBlk/cluster pair */    ){#ifdef  DEBUG_TRACE    printf("secEnd%d PollReceive\n", pDrvCtrl->unit);#endif  /* DEBUG_TRACE */    while (1)    {        if (pMblk == NULL)        {            printf("secEnd%d Error: NULL receive M_BLK\n", pDrvCtrl->unit);            break;        }        /* If not has an associated cluster, avoid operation. */        if (!(pMblk->mBlkHdr.mFlags & M_EXT))        {            printf("secEnd%d Error: Invalid receive M_BLK\n", pDrvCtrl->unit);            break;        }        /* Receive data if available. */        return DRV_POLL_RECEIVE(pDrvCtrl, pMblk);    }    END_ERR_ADD(&pDrvCtrl->endObj, MIB2_IN_ERRS, +1);    return EAGAIN;}/********************************************************************************* secEndInitParse - parse the init string** Parse the input string. Fill in values in the driver control structure.** The muxLib.o module automatically prepends the unit number to the user's* initialization string from the BSP (configNet.h).** RETURNS: OK or ERROR for invalid arguments.*/LOCAL STATUS secEndInitParse(    DRV_CTRL *pDrvCtrl,                                     /* pointer to DRV_CTRL structure */    char *initString                                        /* parameter string */    ){    char *tok;    char *holder = NULL;#ifdef  DEBUG_TRACE    printf("secEnd InitParse, %s\n", initString);#endif  /* DEBUG_TRACE */    tok = strtok_r(initString, ":", &holder);    if (tok == NULL)    {        return ERROR;    }    pDrvCtrl->unit = 0 ; /* (int)strtoul(tok, NULL, 16);*/    /* Sanity check the unit number. */    if (pDrvCtrl->unit < 0)    {        printf("secEnd Error: Invalid unit number, %d\n", pDrvCtrl->unit);        return ERROR;    }    return OK;}/********************************************************************************* secEndInitMem - initialize memory for the chip** This routine is highly specific to the device.** RETURNS: OK or ERROR.*/    LOCAL STATUS secEndInitMem(    DRV_CTRL *pDrvCtrl                                      /* pointer to DRV_CTRL structure */    ){    M_CL_CONFIG mClBlkConfig;                               /* mBlk, clBlk pool configuration table. */    CL_DESC clDescTbl[SEC_END_NUM_CL_TYPE];                 /* cluster pool configuration table. */#ifdef  DEBUG_TRACE    printf("secEnd%d InitMem\n", pDrvCtrl->unit);#endif  /* DEBUG_TRACE */    /* Allocate the netPool. */    if ((pDrvCtrl->endObj.pNetPool = malloc(sizeof(NET_POOL))) == NULL)    {        return (ERROR);    }    /* Initialize mBlk/clBlk pool. */    mClBlkConfig.mBlkNum    = DRV_NUM_MBLK;    mClBlkConfig.clBlkNum   = DRV_NUM_CLUSTER ;//DRV_NUM_MBLK;    mClBlkConfig.memSize    = mClBlkConfig.mBlkNum * (M_BLK_SZ + sizeof(long)) +                              mClBlkConfig.clBlkNum * (CL_BLK_SZ+ sizeof(long));    mClBlkConfig.memArea    = (char *)memalign(MBLK_ALIGNMENT, mClBlkConfig.memSize);    if (mClBlkConfig.memArea == NULL)    {        printf("secEnd%d Error: Failed to allocate mBlk/clBlk pool\n", pDrvCtrl->unit);        return (ERROR);    }    /* Save the pointer to the mBlock/cBlk pool area. */    pDrvCtrl->pMblkArea = (void *)mClBlkConfig.memArea;    /* Initialize cluster pool. */    clDescTbl[0].clSize     =  SIZE_ETH_MDMA ;  /*SIZE_FB - CL_OVERHEAD;*/    clDescTbl[0].clNum      =   DRV_NUM_CLUSTER;    clDescTbl[0].memSize    =   (clDescTbl[0].clNum *                               (clDescTbl[0].clSize + 8))      						  + sizeof(int);        /* +8 is for proper alignment */	/* SIZE_FB * DRV_NUM_CLUSTER;*//*    clDescTbl[0].memArea    = (char *)(DRV_CLUSTER_MEM_BASE );*/    clDescTbl[0].memArea =    (char *) cacheDmaMalloc (clDescTbl[0].memSize);    if (clDescTbl[0].memArea == NULL)    {		;    	return (ERROR);    }   pDrvCtrl->pClArea = clDescTbl[0].memArea ;#ifdef  DEBUG_TRACE    printf("    mBlk/clBlk pool     : 0x%08X\n", (UINT32)mClBlkConfig.memArea);    printf("    cluster pool        : 0x%08X\n", (UINT32)clDescTbl[0].memArea);#endif  /* DEBUG_TRACE */    /* Initialize the netPool. */    if (netPoolInit(pDrvCtrl->endObj.pNetPool, &mClBlkConfig, &clDescTbl[0], SEC_END_NUM_CL_TYPE, NULL) == ERROR)    {        printf("secEnd%d Error: Failed to initialize netPool\n", pDrvCtrl->unit);        return (ERROR);    }    /* Save cluster pool. */ /*   if ((pDrvCtrl->pClPool = netClPoolIdGet(pDrvCtrl->endObj.pNetPool, DRV_SIZE_CLUSTER, FALSE)) == NULL)    {        printf("secEnd%d Error: Failed to get clPool\n", pDrvCtrl->unit);        return (ERROR);    }*/#ifdef  DEBUG_TRACE    printf("    pNetPool->mBlkCnt   : %d\n", pDrvCtrl->endObj.pNetPool->mBlkCnt);    printf("    pNetPool->mBlkFree  : %d\n", pDrvCtrl->endObj.pNetPool->mBlkFree);    printf("    pNetPool->clLg2Max  : %d\n", pDrvCtrl->endObj.pNetPool->clLg2Max);    printf("    pNetPool->clSizeMax : %d\n", pDrvCtrl->endObj.pNetPool->clSizeMax);    printf("    pNetPool->clLg2Min  : %d\n", pDrvCtrl->endObj.pNetPool->clLg2Min);    printf("    pNetPool->clSizeMin : %d\n", pDrvCtrl->endObj.pNetPool->clSizeMin);/*  printf("    pClPool->clSize     : %d\n", pDrvCtrl->pClPool->clSize);    printf("    pClPool->clLg2      : %d\n", pDrvCtrl->pClPool->clLg2);    printf("    pClPool->clNum      : %d\n", pDrvCtrl->pClPool->clNum);    printf("    pClPool->clNumFree  : %d\n", pDrvCtrl->pClPool->clNumFree);*/#endif  /* DEBUG_TRACE */    /* Change cluster size to real size. *//*    pDrvCtrl->pClPool->clSize = DRV_SIZE_CLUSTER;*/    return OK;}LOCAL unsigned char sysSecEnetAddr[][6] = {#if 1    {0x08, 0x00, 0x01, 0x01, 0x01, 0x01},    {0x08, 0x00, 0x01, 0x01, 0x01, 0x02},    {0x08, 0x00, 0x01, 0x01, 0x01, 0x03},    {0x08, 0x00, 0x01, 0x01, 0x01, 0x04},    {0x08, 0x00, 0x01, 0x01, 0x01, 0x05},    {0x08, 0x00, 0x01, 0x01, 0x01, 0x06}#else    {0x08, 0x00, 0x02, 0x02, 0x02, 0x01},    {0x08, 0x00, 0x02, 0x02, 0x02, 0x02},    {0x08, 0x00, 0x02, 0x02, 0x02, 0x03},    {0x08, 0x00, 0x02, 0x02, 0x02, 0x04},    {0x08, 0x00, 0x02, 0x02, 0x02, 0x05},    {0x08, 0x00, 0x02, 0x02, 0x02, 0x06}#endif};STATUS sysSecEnetAddrGet(    int unit,                                               /* unit number of device being used */    UCHAR* addr                                             /* where to copy the ethernet address */    ){    bcopy((char*)sysSecEnetAddr[unit], (char*)addr, 6);    return (OK);}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费成人性网站| 国产成a人亚洲| 国产成人综合视频| 色www精品视频在线观看| 日韩欧美在线不卡| 亚洲欧美日韩综合aⅴ视频| 精品一区二区精品| 欧美午夜精品电影| 国产精品欧美久久久久无广告 | 日本精品视频一区二区| 欧美电视剧在线观看完整版| 一区二区三区毛片| 成人动漫一区二区在线| 久久久www免费人成精品| 日韩高清不卡在线| 欧美日韩国产影片| 亚洲国产欧美在线| 欧美性色欧美a在线播放| 中文字幕色av一区二区三区| 国产成人免费在线观看| 精品美女在线播放| 狠狠色狠狠色合久久伊人| 91精品国产色综合久久不卡电影 | 日本精品视频一区二区三区| 国产精品国产三级国产aⅴ入口 | 国产精品久久久久久久久晋中 | 一本到一区二区三区| 国产精品久久久久影院色老大| 国产乱码精品一区二区三区五月婷 | 精品在线播放午夜| 日韩欧美电影一区| 狠狠色丁香婷婷综合| 精品久久久久久最新网址| 韩国一区二区三区| 国产亚洲欧洲997久久综合 | 国产精品三级av在线播放| 国产精品夜夜爽| 国产亚洲精品bt天堂精选| 丰满少妇久久久久久久| 国产精品电影院| 91福利国产精品| 亚洲国产视频在线| 欧美一区二区在线看| 麻豆精品一二三| 久久香蕉国产线看观看99| 国产69精品久久久久777| 国产精品久久久99| 91黄色免费网站| 日韩高清一区二区| 国产日韩欧美亚洲| 色婷婷综合久久久中文一区二区| 亚洲精品国产视频| 欧美精品久久天天躁| 久草中文综合在线| 中文字幕va一区二区三区| 91久久精品国产91性色tv| 日韩精品免费视频人成| 久久亚洲一级片| 91美女在线观看| 欧美96一区二区免费视频| 国产欧美一区视频| 91蜜桃婷婷狠狠久久综合9色| 亚洲一区二区三区国产| xnxx国产精品| 欧美系列亚洲系列| 国产在线不卡一区| 亚洲精选在线视频| 精品免费一区二区三区| 色婷婷综合久久| 精品一区二区在线观看| 亚洲色图一区二区| 欧美电影免费观看高清完整版 | 天天综合天天做天天综合| 久久综合狠狠综合久久综合88 | 国产日产欧美一区二区三区 | www.亚洲色图.com| 日韩在线播放一区二区| 国产精品久久久久毛片软件| 欧美一级日韩不卡播放免费| 丁香婷婷深情五月亚洲| 日韩av在线免费观看不卡| 亚洲三级电影网站| 亚洲精品在线免费播放| 在线观看一区二区精品视频| 国产自产2019最新不卡| 日韩高清在线一区| 亚洲精品欧美激情| 亚洲国产精品成人久久综合一区| 日韩一级片在线观看| 欧美亚洲高清一区| 色综合久久99| 不卡电影一区二区三区| 国内久久精品视频| 蜜桃视频在线一区| 视频一区二区三区入口| 一区二区三区.www| 中文字幕一区av| 亚洲国产经典视频| 国产视频一区在线播放| 亚洲精品一区二区三区四区高清| 精品视频一区三区九区| 91高清视频在线| 色综合久久久久综合99| 99热精品国产| 日本精品一区二区三区四区的功能| 成人在线视频一区二区| 国产一区二区0| 国产精品一区二区三区四区| 麻豆91在线播放| 久久超碰97人人做人人爱| 日av在线不卡| 免费观看日韩电影| 精品在线免费观看| 极品少妇xxxx精品少妇| 激情综合色播激情啊| 精品一区二区在线免费观看| 韩国一区二区在线观看| 国产成人aaa| 成人国产免费视频| 99久久精品久久久久久清纯| av电影天堂一区二区在线观看| eeuss鲁一区二区三区| 99精品1区2区| 欧美日韩精品一区二区三区 | 欧美日韩一区二区三区四区| 欧美色精品在线视频| 欧美一区二区三区视频免费播放 | 亚洲欧洲色图综合| 亚洲乱码精品一二三四区日韩在线| 亚洲美女一区二区三区| 亚洲影院在线观看| 日本成人在线看| 国产成人自拍在线| 在线精品视频小说1| 7777精品伊人久久久大香线蕉 | 一区二区三区成人| 青青草国产成人av片免费| 黄页视频在线91| 99久久久精品免费观看国产蜜| 91国产免费看| 欧美精品一区二区三区高清aⅴ | 精品一区二区三区日韩| 北条麻妃一区二区三区| 欧美日韩亚洲综合一区二区三区 | 《视频一区视频二区| 亚洲一区欧美一区| 国产在线乱码一区二区三区| 99国产精品久久久久久久久久久| 欧美日精品一区视频| 久久久久久亚洲综合影院红桃| 亚洲免费在线观看| 久久99精品久久久久久动态图| a美女胸又www黄视频久久| 777午夜精品视频在线播放| 亚洲国产精品精华液2区45| 五月天激情小说综合| 国产成人免费在线视频| 欧美一区日本一区韩国一区| 国产精品伦理在线| 久久精品国产澳门| 色网站国产精品| 国产欧美日韩在线| 日韩av一区二区三区四区| 粉嫩av一区二区三区粉嫩| 这里是久久伊人| 亚洲人成精品久久久久| 黄一区二区三区| 欧美一区二区三区在| 亚洲一区二区视频在线观看| 国产精品自拍在线| 欧美一级片在线| 亚洲一区二区三区激情| bt欧美亚洲午夜电影天堂| 精品日韩一区二区| 丝袜亚洲另类欧美| 欧美亚洲国产一区二区三区va| 国产精品色婷婷久久58| 国产福利91精品一区二区三区| 91麻豆精品国产91久久久久| 亚洲精品国产精华液| 成人黄色小视频| 国产欧美一区二区精品性色| 蜜臀av一区二区在线免费观看| 欧美日韩国产另类不卡| 一区二区三区在线观看视频| av影院午夜一区| 亚洲国产精品传媒在线观看| 国产精品一区免费视频| 精品国产一区二区三区av性色 | 一区二区三区欧美久久| 91一区二区三区在线观看| 国产蜜臀97一区二区三区| 国产精品亚洲人在线观看| 精品久久久久一区| 国产综合色在线视频区| 精品国产一区久久| 国产精品自拍三区| 欧美国产日本视频| 99这里只有精品| 国产精品福利av|