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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? usbehcdutil.c

?? vxWorks下USB2.0中的EHCI的HCD源碼,極具有參考價值
?? C
?? 第 1 頁 / 共 5 頁
字號:
    /* Pointer to the allocated memory location */    VOID * pAllocatedMem = NULL;    OS_LOG_MESSAGE_LOW(EHCD,"usbEhcdAddToFreeSITDList - Entry\n",0,0,0,0);    /* Check the validity of the parameter */    if (NULL == pSITD)        {    	OS_LOG_MESSAGE_HIGH(EHCD,"usbEhcdAddToFreeSITDList - \                                    Parameter not valid\n",0,0,0,0);        return FALSE;        }    /* Assert if the Allocated memory for the ITD is not valid */    OS_ASSERT(NULL != pSITD->pAllocatedMem);    /* Store the allocated memory in a temporary pointer */    pAllocatedMem = pSITD->pAllocatedMem;    /* Reinitialize the memory */    OS_MEMSET(pSITD, 0, sizeof(USB_EHCD_SITD));    /* Copy the allocated memory pointer back */    pSITD->pAllocatedMem = pAllocatedMem;    /* Wait on the signalling of the event */    OS_WAIT_FOR_EVENT(g_ListAccessEvent,OS_WAIT_INFINITE);    /* Update the next element of the SITD */    pSITD->pNext = pHeadFreeSITD;    /* Make this ITD as the head of the free list */    pHeadFreeSITD = pSITD;    /* If tail pointer is NULL, this SITD becomes the tail pointer */    if (NULL == pTailFreeSITD)        {        pTailFreeSITD = pSITD;        }    /* Release the event */    OS_RELEASE_EVENT(g_ListAccessEvent);    OS_LOG_MESSAGE_LOW(EHCD,"usbEhcdAddToFreeSITDList - Exit\n",0,0,0,0);    return TRUE;    }    /* End of usbEhcdAddToFreeSITDList() *//***************************************************************************** usbEhcdGetFreeQTD - gets a QTD from the free list** This function is used to retrieve a QTD from the free QTD list** RETURNS: Pointer to the USB_EHCD_QTD data structure if the list is non-empty*          NULL if the list is empty.** ERRNO:*   None.** \NOMANUAL*/pUSB_EHCD_QTD usbEhcdGetFreeQTD    (    VOID    )    {    /* Pointer to the QTD */    pUSB_EHCD_QTD pQTD = NULL;    VOID * pTempAllocatedMemory = NULL;    OS_LOG_MESSAGE_LOW(EHCD,"usbEhcdGetFreeQTD - Entry\n",0,0,0,0);    /* Assert if the list access event is not valid */    OS_ASSERT(NULL != g_ListAccessEvent);    /* Check if there is any element in the free list and extract the element.     * Update the free list. This is done acquiring and releasing an event.     */    /* Wait on the signalling of the event */    OS_WAIT_FOR_EVENT(g_ListAccessEvent,OS_WAIT_INFINITE);    /* There are elements in the free list */    if (NULL != pHeadFreeQTD)        {        pQTD = pHeadFreeQTD;        pHeadFreeQTD = pHeadFreeQTD->pNext;        /*         * If this is the only element in the free list,         * the list becomes empty.         */        if (pQTD == pTailFreeQTD)            {            pTailFreeQTD = NULL;            }        /* remember the allocated memory pointer */        pTempAllocatedMemory = pQTD->pAllocatedMem;        /* Initialize all the elements of the Queue Head */        OS_MEMSET(pQTD, 0, sizeof(USB_EHCD_QTD));        /* written back the remembered allocated memory */        pQTD->pAllocatedMem = pTempAllocatedMemory;        }    /* Release the event */    OS_RELEASE_EVENT(g_ListAccessEvent);    OS_LOG_MESSAGE_LOW(EHCD,"usbEhcdGetFreeQTD - Exit\n",0,0,0,0);    /* Return the pointer to QTD */    return pQTD;    }    /* End of usbEhcdGetFreeQTD() *//***************************************************************************** usbEhcdGetFreeQH - gets a QH from the free list** This function is used to retrieve a QH from the free QH list** RETURNS: Pointer to the USB_EHCD_QH data structure if the list is non-empty*          NULL if the list is empty.** ERRNO:*   None.** \NOMANUAL*/pUSB_EHCD_QH usbEhcdGetFreeQH( void )    {    /* Pointer to the QH */    pUSB_EHCD_QH pQH = NULL;    VOID   *pTempAllocatedMemory = NULL;    /* Assert if the list access event is not valid */    OS_ASSERT(NULL != g_ListAccessEvent);    /* Check if there is any element in the free list and extract the element.     * Update the free list. This is done acquiring and releasing an event.     */    /* Wait on the signalling of the event */    OS_WAIT_FOR_EVENT(g_ListAccessEvent,OS_WAIT_INFINITE);    /* There are elements in the free list */    if (NULL != pHeadFreeQH)        {        pQH = pHeadFreeQH;        pHeadFreeQH = pHeadFreeQH->pNext;        /*         * If this is the only element in the free list,         * the list becomes empty.         */        if (pQH == pTailFreeQH)            {            pTailFreeQH = NULL;            }        /* remember the allocated memory pointer */        pTempAllocatedMemory = pQH->pAllocatedMem;        /* Initialize all the elements of the Queue Head */        OS_MEMSET(pQH, 0, sizeof(USB_EHCD_QH));        /* written back the remembered allocated memory */        pQH->pAllocatedMem = pTempAllocatedMemory;        }    /* Release the event */    OS_RELEASE_EVENT(g_ListAccessEvent);    /* Return the QH pointer */    return pQH;    }    /* End of usbEhcdGetFreeQH() *//***************************************************************************** usbEhcdGetFreeITD - gets a ITD from the free list** This function is used to retrieve a ITD from the free ITD list** RETURNS: Pointer to the USB_EHCD_ITD data structure if the list is non-empty*          NULL if the list is empty.** ERRNO:*   None.** \NOMANUAL*/pUSB_EHCD_ITD usbEhcdGetFreeITD(void)    {    /* Pointer to the ITD */    pUSB_EHCD_ITD pITD = NULL;    VOID  *pTempAllocatedMemory = NULL;    /* Assert if the list access event is not valid */    OS_ASSERT(NULL != g_ListAccessEvent);    /* Check if there is any element in the free list and extract the element.     * Update the free list. This is done acquiring and releasing an event.     */    /* Wait on the signalling of the event */    OS_WAIT_FOR_EVENT(g_ListAccessEvent,OS_WAIT_INFINITE);    /* There are elements in the free list */    if (NULL != pHeadFreeITD)        {        pITD = pHeadFreeITD;        pHeadFreeITD = pHeadFreeITD->pNext;        /*         * If this is the only element in the free list,         * the list becomes empty.         */        if (pITD == pTailFreeITD)            {            pTailFreeITD = NULL;            }        /* remember the allocated memory pointer */        pTempAllocatedMemory = pITD->pAllocatedMem;        /* Initialize all the elements of the Queue Head */        OS_MEMSET(pITD, 0, sizeof(USB_EHCD_ITD));        /* written back the remembered allocated memory */        pITD->pAllocatedMem = pTempAllocatedMemory;        }    /* Release the event */    OS_RELEASE_EVENT(g_ListAccessEvent);    /* Return the ITD pointer */    return pITD;    }    /* End of usbEhcdGetFreeITD() *//***************************************************************************** usbEhcdGetFreeSITD - gets a SITD from the free list** This function is used to retrieve a SITD from the free ITD list** RETURNS: Pointer to the USB_EHCD_SITD data structure if the list is non-empty*          NULL if the list is empty.** ERRNO:*   None.** \NOMANUAL*/pUSB_EHCD_SITD usbEhcdGetFreeSITD( void )    {    /* Pointer to the SITD */    pUSB_EHCD_SITD pSITD = NULL;    VOID *pTempAllocatedMemory = NULL;    /* Assert if the list access event is not valid */    OS_ASSERT(NULL != g_ListAccessEvent);    /*     * Check if there is any element in the free list and extract the element.     * Update the free list. This is done acquiring and releasing an event.     */    /* Wait on the signalling of the event */    OS_WAIT_FOR_EVENT(g_ListAccessEvent,OS_WAIT_INFINITE);    /* There are elements in the free list */    if (NULL != pHeadFreeSITD)        {        pSITD = pHeadFreeSITD;        pHeadFreeSITD = pHeadFreeSITD->pNext;        /*         * If this is the only element in the free list,         * the list becomes empty.         */        if (pSITD == pTailFreeSITD)            {            pTailFreeSITD = NULL;            }        /* remember the allocated memory pointer */        pTempAllocatedMemory = pSITD->pAllocatedMem;        /* Initialize all the elements of the Queue Head */        OS_MEMSET(pSITD, 0, sizeof(USB_EHCD_SITD));        /* written back the remembered allocated memory */        pSITD->pAllocatedMem = pTempAllocatedMemory;        }    /* Release the event */    OS_RELEASE_EVENT(g_ListAccessEvent);    /* Return the pointer to SITD */    return pSITD;    }    /* End of usbEhcdGetFreeSITD() *//***************************************************************************** usbEhcdFreeAllLists - releases all the free lists.** This function frees up all the elements in the free list during the HCD* uninitialization.** RETURNS: None.** ERRNO:*   None.** \NOMANUAL*/VOID usbEhcdFreeAllLists(VOID)    {    /* Pointer to the USB_EHCD_QH data structure */    pUSB_EHCD_QH pQH = NULL;    /* Pointer to the USB_EHCD_QTD data structure */    pUSB_EHCD_QTD pQTD = NULL;    /* Pointer to the USB_EHCD_ITD data structure */    pUSB_EHCD_ITD pITD = NULL;    /* Pointer to the USB_EHCD_SITD data structure */    pUSB_EHCD_SITD pSITD = NULL;    OS_LOG_MESSAGE_LOW(EHCD,"usbEhcdFreeAllLists - Entry\n",0,0,0,0);    /* Assert if the list access event is not valid */    OS_ASSERT(NULL != g_ListAccessEvent);    /* Wait on the signalling of the event */    OS_WAIT_FOR_EVENT(g_ListAccessEvent,OS_WAIT_INFINITE);    /* Free the elements in the QH list */    for (; pHeadFreeQH != NULL; pHeadFreeQH = pQH)        {    	/* Store the next pointer temporarily */    	pQH = pHeadFreeQH->pNext;        /* Assert if the allocated memory pointer is invalid */        OS_ASSERT(NULL != pHeadFreeQH->pAllocatedMem);    	/* Free the Queue head data structure */    	memPartFree(ehcdmemPartID, pHeadFreeQH->pAllocatedMem);        }    /* Update the head and tail pointers to NULL */    pHeadFreeQH = NULL;    pTailFreeQH = NULL;    /* Free the elements in the QTD list */    for (; pHeadFreeQTD != NULL; pHeadFreeQTD = pQTD)        {    	/* Store the next pointer temporarily */    	pQTD = pHeadFreeQTD->pNext;        /* Assert if the allocated memory pointer is invalid */        OS_ASSERT(NULL != pHeadFreeQTD->pAllocatedMem);    	/* Free the Queue element data structure */    	memPartFree(ehcdmemPartID, pHeadFreeQTD->pAllocatedMem);        }    /* Update the head and tail pointers to NULL */    pHeadFreeQTD = NULL;    pTailFreeQTD = NULL;    /* Free the elements in the ITD list */    for (; pHeadFreeITD != NULL; pHeadFreeITD = pITD)        {    	/* Store the next pointer temporarily */    	pITD = pHeadFreeITD->pNext;        /* Assert if the allocated memory pointer is invalid */        OS_ASSERT(NULL != pHeadFreeITD->pAllocatedMem);    	/* Free the iTD data structure */    	memPartFree(ehcdmemPartID, pHeadFreeITD->pAllocatedMem);        }    /* Update the head and tail pointers to NULL */    pHeadFreeITD = NULL;    pTailFreeITD = NULL;    /* Free the elements in the SITD list */    for (; pHeadFreeSITD != NULL; pHeadFreeSITD = pSITD)        {    	/* Store the next pointer temporarily */    	pSITD = pHeadFreeSITD->pNext;        /* Assert if the allocated memory pointer is invalid */        OS_ASSERT(NULL != pHeadFreeSITD->pAllocatedMem);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品在线播放免费| 日韩一级二级三级精品视频| 欧美视频一区二区三区四区| 精品成人免费观看| 亚洲国产一区二区三区| 国产资源在线一区| 91精品国产全国免费观看| 国产精品久久久一本精品 | 国产精品色在线观看| 亚洲成av人片一区二区| 成人免费高清在线| 欧美精品一区视频| 久热成人在线视频| 日韩一区二区在线看| 亚洲一区二区三区中文字幕在线 | 婷婷成人激情在线网| 9久草视频在线视频精品| 久久蜜桃av一区二区天堂| 日韩综合小视频| 欧美天堂亚洲电影院在线播放| 亚洲欧美自拍偷拍| 成人永久aaa| 国产日韩欧美a| 国产精品1区2区3区| 精品国产乱码久久久久久久| 日本欧美在线观看| 日本韩国一区二区| 亚洲日本中文字幕区| 成人高清视频免费观看| 国产亚洲成av人在线观看导航| 麻豆国产欧美日韩综合精品二区| 欧美日韩中文字幕精品| 亚洲第四色夜色| 91精品啪在线观看国产60岁| 首页综合国产亚洲丝袜| 日韩三级伦理片妻子的秘密按摩| 日本亚洲一区二区| 日韩精品一区二区三区在线播放 | 久久综合色婷婷| 国产一区在线观看麻豆| 国产日韩av一区| 成人app在线| 亚洲卡通欧美制服中文| 日本韩国欧美一区| 午夜欧美一区二区三区在线播放| 欧美日韩一卡二卡三卡 | 欧美一区二区不卡视频| 麻豆精品视频在线| 欧美激情在线看| 色婷婷一区二区| 亚洲午夜激情av| 日韩视频在线观看一区二区| 激情亚洲综合在线| 国产精品国产a级| 欧美日韩国产bt| 91啪在线观看| 国产很黄免费观看久久| 日本一区二区三区免费乱视频 | 福利电影一区二区三区| 国产精品欧美一区喷水| 日本福利一区二区| 丝袜脚交一区二区| 久久女同精品一区二区| 91色九色蝌蚪| 蜜桃视频在线观看一区二区| 久久久噜噜噜久久人人看| 色香蕉久久蜜桃| 毛片一区二区三区| 国产精品久久久久久久第一福利| 欧美日韩一级黄| 成人av资源网站| 日韩成人午夜精品| 亚洲日本中文字幕区| 日韩欧美一二三四区| 91在线观看视频| 国产综合久久久久久鬼色| 亚洲精品日日夜夜| 国产欧美中文在线| 91精品国产一区二区| 91亚洲午夜精品久久久久久| 久国产精品韩国三级视频| 伊人色综合久久天天| 精品国精品国产尤物美女| 91久久国产最好的精华液| 国产尤物一区二区| 日本亚洲欧美天堂免费| 亚洲青青青在线视频| 久久只精品国产| 欧美精选一区二区| 91性感美女视频| 国产成人丝袜美腿| 国产专区欧美精品| 免费久久精品视频| 亚洲国产精品尤物yw在线观看| 国产拍欧美日韩视频二区| 日韩精品自拍偷拍| 5月丁香婷婷综合| 欧美亚洲日本国产| 94-欧美-setu| 成人动漫视频在线| 高清不卡一二三区| 国产精品一区二区视频| 精品在线免费观看| 精品一区二区三区免费播放| 青椒成人免费视频| 日本视频免费一区| 丝袜美腿成人在线| 美洲天堂一区二卡三卡四卡视频| 亚洲一级不卡视频| 亚洲午夜在线电影| 亚洲国产视频直播| 亚洲自拍偷拍九九九| 亚洲综合激情网| 亚洲精品乱码久久久久久久久 | 色偷偷88欧美精品久久久| 成人午夜精品在线| 成人app网站| 91论坛在线播放| 91国产免费看| 在线不卡的av| 日韩一区二区三区在线观看 | 美女在线观看视频一区二区| 日韩一区欧美二区| 久久国产生活片100| 精品一区二区综合| 成人性生交大片免费| 岛国精品在线观看| 97se狠狠狠综合亚洲狠狠| 日本精品一区二区三区高清 | 亚洲一卡二卡三卡四卡| 亚洲国产精品久久人人爱蜜臀| 亚洲一区二区三区四区中文字幕| 亚洲电影中文字幕在线观看| 日韩电影在线观看电影| 日本欧美大码aⅴ在线播放| 日本va欧美va精品发布| 国产一区 二区 三区一级| www.66久久| 欧美羞羞免费网站| 日韩精品专区在线影院重磅| 国产人成一区二区三区影院| 自拍视频在线观看一区二区| 一区二区三区高清在线| 免费在线观看一区| 成人一区二区三区视频在线观看| 色综合色狠狠天天综合色| 91麻豆精品国产| 国产欧美日韩卡一| 亚洲主播在线观看| 精品一区精品二区高清| 99久久精品国产网站| 欧美日韩精品一区视频| 久久久久久久一区| 亚洲高清免费观看| 国产精品99久久久久久久vr| 色狠狠桃花综合| 久久亚洲二区三区| 亚洲国产视频网站| 国产精品99久久久久久久女警| 在线观看国产日韩| 国产欧美精品一区二区三区四区 | 久久女同精品一区二区| 一区二区三区成人| 国产精品自拍网站| 欧美日本一区二区三区四区| 国产精品伦理一区二区| 狂野欧美性猛交blacked| 欧洲一区二区三区在线| 国产亚洲精品免费| 日韩影院在线观看| 色猫猫国产区一区二在线视频| www国产亚洲精品久久麻豆| 一区二区三区欧美在线观看| 国产原创一区二区| 欧美挠脚心视频网站| 国产精品久久久久久久久晋中| 青娱乐精品在线视频| av色综合久久天堂av综合| 精品国产精品网麻豆系列| 亚洲成人免费视| 色菇凉天天综合网| 中文字幕一区二区三区视频| 国产精品亚洲午夜一区二区三区 | 欧美日韩激情一区二区三区| 国产精品福利av| 粉嫩av一区二区三区粉嫩| 欧美一级片免费看| 亚洲国产精品久久人人爱蜜臀 | 欧美成人精品高清在线播放| 亚洲高清免费在线| 欧美三级韩国三级日本一级| 亚洲美女免费在线| caoporn国产一区二区| 中文一区二区完整视频在线观看| 精久久久久久久久久久| 欧美大胆一级视频| 精品一区二区综合| wwwwxxxxx欧美| 国产精品综合一区二区三区| www亚洲一区|