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

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

?? usbehcdutil.c

?? vxWorks下USB2.0中的EHCI的HCD源碼,極具有參考價值
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* usbEhcdUtil.c - contains the utility functions of EHCD *//* Copyright 2002-2003 Wind River Systems, Inc. *//*modification history--------------------01d,23Jul03,Incorporated changes identified during testing on MIPS.01c,16Jul03,updated the next link pointer of the aligned pointer in the free            list to be NULL.01b,26jun03,gpd changing the code to WRS standards.01a,25apr02,ram written.*//*DESCRIPTIONThis module defines the functions which serve as utility functions for theEHCI Host Controller Driver.INCLUDE FILES: usbhst.h, usbEhcdDataStructures.h, usbEhcdUtil.h, usbEhcdDebug.h,SEE ALSO:.I "USB specification, revision 2.0".I "EHCI specification, revision 1.0"*//* INTERNAL ******************************************************************************* * * Filename         : EHCD_Util.c * * Copyright        : * * THE COPYRIGHT IN THE CONTENTS OF THIS SOFTWARE VEST WITH WIPRO * LIMITED A COMPANY INCORPORATED UNDER THE LAWS OF INDIA AND HAVING * ITS REGISTERED OFFICE AT DODDAKANNELLI SARJAPUR ROAD  BANGALORE * 560 035. DISTRIBUTION OR COPYING OF THIS SOFTWARE BY * ANY INDIVIDUAL OR ENTITY OTHER THAN THE ADDRESSEE IS STRICTLY * PROHIBITED AND MAY INCUR LEGAL LIABILITY. IF YOU ARE NOT THE * ADDRESSEE PLEASE NOTIFY US IMMEDIATELY BY PHONE OR BY RETURN EMAIL. * THE ADDRESSEE IS ADVISED TO MAINTAIN THE PROPRIETARY INTERESTS OF * THIS COPYRIGHT AS PER APPLICABLE LAWS. * * Description      :  This contains the utility functions which are used by the *                     EHCI Driver. * * ******************************************************************************/#include "usb2/usbOsal.h"#include "usb2/BusAbstractionLayer.h"#include "usb2/usbHst.h"#include "usb2/usbEhcdDataStructures.h"#include "usb2/usbEhcdUtil.h"#include <math.h>#include "usb2/usbHcdInstr.h"/* To hold the head of the Free QH list */LOCAL pUSB_EHCD_QH pHeadFreeQH  = NULL;/* To hold the tail of the Free QH list */LOCAL pUSB_EHCD_QH pTailFreeQH  = NULL;/* To hold the head of the Free QTD list */LOCAL pUSB_EHCD_QTD pHeadFreeQTD  = NULL;/* To hold the tail of the Free QTD list */LOCAL pUSB_EHCD_QTD pTailFreeQTD  = NULL;/* To hold the head of the free isochronous TD list */LOCAL pUSB_EHCD_ITD pHeadFreeITD = NULL;/* To hold the tail of the free isochronous TD list */LOCAL pUSB_EHCD_ITD pTailFreeITD = NULL;/* To hold the head of the free split isochronous TD list */LOCAL pUSB_EHCD_SITD pHeadFreeSITD = NULL;/* To hold the tail of the free split isochronous TD list */LOCAL pUSB_EHCD_SITD pTailFreeSITD = NULL;/* To hold the event which prevents the list accesses */#define pUSB_EHCD_QTD_NEXT_QTD_POINTER_OFFSET 0#define pUSB_EHCD_QTD_pNext_OFFSET 22extern OS_EVENT_ID g_ListAccessEvent;extern char *ehcdDMAPool;extern PART_ID ehcdmemPartID;LOCAL pUSB_EHCD_ITD usbEhcdFormEmptyITD    (    pUSB_EHCD_PIPE  pHCDPipe /* Pointer to the USB_EHCD_PIPE structure */    );/* forward declarations */LOCAL UINT32 usbEhcdFillITDBuffer    (    pUSB_EHCD_ITD pITD, /* Pointer to the ITD */    UINT8 uMicroFrameMask, /* Microframe mask value */    UCHAR *pBuffer,  /* Pointer to the buffer value */    UINT32 uSize     /* Size of the buffer */    );LOCAL pUSB_EHCD_SITD usbEhcdFormEmptySITD    (    pUSB_EHCD_PIPE  pHCDPipe /* Pointer to the USB_EHCD_PIPE structure */    );/* forward declarations */LOCAL UINT32 usbEhcdFillSITDBuffer    (    pUSB_EHCD_SITD pSITD, /* Pointer to the ITD */    UCHAR *pBuffer,  /* Pointer to the buffer value */    UINT32 uSize     /* Size of the buffer */    );LOCAL UINT32 usbEhcdFillITD    (    pUSB_EHCD_ITD pITD, /* Pointer to the ITD */    UINT8 uMicroFrameMask, /* Microframe mask value */    UCHAR *pBuffer,  /* Pointer to the buffer value */    UINT32 uPktCnt,     /* No of packet */    pUSBHST_ISO_PACKET_DESC pIsoPktDesc /* array of packet descriptor */    );LOCAL BOOLEAN usbEhcdFillSITD    (    pUSB_EHCD_SITD    pSITD, /* Pointer to the SITD */    UCHAR *        pBuffer,  /* Pointer to the start of the buffer */    UINT32     uTransferLength  /* Transfer length */    );/***************************************************************************** usbEhcdAlign - aligns the memory location** This function is used to align a memory location.** <pMemory> Pointer to the allocated memory.* <uAlignment> Alignment size.** RETURNS: Pointer to a void.** ERRNO:*   None.** \NOMANUAL*/VOID * usbEhcdAlign    (    VOID * pMemory,    UINT32  uAlignment    )    {    /* To hold the offset value */    UINT32 uOffset = 0;    OS_LOG_MESSAGE_LOW(EHCD,"usbEhcdAlign - Entry\n",0,0,0,0);    /* Check if the parameters are valid */    if (NULL == pMemory || 0 == uAlignment)        {    	OS_LOG_MESSAGE_HIGH(EHCD,"usbEhcdAlign - Parameters not valid\n",0,0,0,0);    	return NULL;        }    /* Calculate the offset value */    uOffset = (UINT32)pMemory & (uAlignment - 1);    /* If it not aligned, align it */    if (0 != uOffset)        {        pMemory = ((UINT8 *)pMemory) + uAlignment - uOffset;        }    OS_LOG_MESSAGE_LOW(EHCD,"usbEhcdAlign - Exit\n",0,0,0,0);    /* Return the aligned memory location */    return pMemory;    }    /* End of function usbEhcdAlign() *//***************************************************************************** usbEhcdAddToFreeQHList - adds the QH to the free list** This function is used to add a QH to the free QH list.** <pQH> Pointer to the USB_EHCD_QH data structure.** RETURNS: TRUE if the QH is added successfully.*          FALSE if the QH is not added successfully.** ERRNO:*   None.* * \NOMANUAL*/BOOLEAN usbEhcdAddToFreeQHList    (    pUSB_EHCD_QH pQH    )    {    /* Pointer to the allocated memory location */    VOID * pAllocatedMem = NULL;    OS_LOG_MESSAGE_LOW(EHCD,"usbEhcdAddToFreeQHList - Entry\n",0,0,0,0);    /* Check the validity of the parameter */    if (NULL == pQH)        {    	OS_LOG_MESSAGE_HIGH(EHCD,"usbEhcdAddToFreeQHList - \                        Parameter not valid\n",0,0,0,0);        return FALSE;        }    /* Assert if the Allocated memory for the QH is not valid */    OS_ASSERT(NULL != pQH->pAllocatedMem);    /* Store the allocated memory in a temporary pointer */    pAllocatedMem = pQH->pAllocatedMem;    /* Reinitialize the memory */    OS_MEMSET(pQH, 0, sizeof(USB_EHCD_QH));    /* Copy the allocated memory pointer back */    pQH->pAllocatedMem = pAllocatedMem;    /* Wait on the signalling of the event */    OS_WAIT_FOR_EVENT(g_ListAccessEvent,OS_WAIT_INFINITE);    /* Update the next element of the QTD */    pQH->pNext = pHeadFreeQH;    /* Make this QTD as the head of the free list */    pHeadFreeQH = pQH;    /* If tail pointer is NULL, this QTD becomes the tail pointer */    if (NULL == pTailFreeQH)        {        pTailFreeQH = pQH;        }    /* Release the event */    OS_RELEASE_EVENT(g_ListAccessEvent);    OS_LOG_MESSAGE_LOW(EHCD,"usbEhcdAddToFreeQHList - Exit\n",0,0,0,0);    return TRUE;    }    /* End of usbEhcdAddToFreeQHList() *//***************************************************************************** usbEhcdAddToFreeQTDList - adds the QTD to the free list** This function is used to add a QTD to the free QH list.** <pQTD> Pointer to the USB_EHCD_QTD data structure.** RETURNS: TRUE if the QTD is added successfully.*          FALSE if the QTD is not added successfully.** ERRNO:*   None.** \NOMANUAL*/BOOLEAN usbEhcdAddToFreeQTDList    (    pUSB_EHCD_QTD pQTD    )    {    /* Pointer to the allocated memory location */    VOID * pAllocatedMem = NULL;    /* Check the validity of the parameter */    if (NULL == pQTD)        {    	OS_LOG_MESSAGE_HIGH(EHCD,"usbEhcdAddToFreeQTDList - \                            Parameter not valid\n",0,0,0,0);        return FALSE;        }    /* Assert if the Allocated memory for the QTD is not valid */    OS_ASSERT(NULL != pQTD->pAllocatedMem);    /* Store the allocated memory in a temporary pointer */    pAllocatedMem = pQTD->pAllocatedMem;    /* Reinitialize the memory */    OS_MEMSET(pQTD, 0, sizeof(USB_EHCD_QTD));    /* Copy the allocated memory pointer back */    pQTD->pAllocatedMem = pAllocatedMem;    /* Wait on the signalling of the event */    OS_WAIT_FOR_EVENT(g_ListAccessEvent,OS_WAIT_INFINITE);    /* Update the next element of the QTD */    pQTD->pNext = pHeadFreeQTD;    /* Make this QTD as the head of the free list */    pHeadFreeQTD = pQTD;    /* If tail pointer is NULL, this QTD becomes the tail pointer */    if (NULL == pTailFreeQTD)        {        pTailFreeQTD = pQTD;        }    /* Release the event */    OS_RELEASE_EVENT(g_ListAccessEvent);    return TRUE;    }    /* End of EHCD_AddToFreeTDList() *//***************************************************************************** usbEhcdAddToFreeITDList - adds the ITD to the free list** This function is used to add a ITD to the free QH list.** <pITD> Pointer to the USB_EHCD_ITD data structure.** RETURNS: TRUE if the ITD is added successfully.*          FALSE if the ITD is not added successfully.** ERRNO:*   None.* * \NOMANUAL*/BOOLEAN usbEhcdAddToFreeITDList    (    pUSB_EHCD_ITD pITD    )    {    /* Pointer to the allocated memory location */    VOID * pAllocatedMem = NULL;    OS_LOG_MESSAGE_LOW(EHCD,"usbEhcdAddToFreeITDList - Entry\n",0,0,0,0);    /* Check the validity of the parameter */    if (NULL == pITD)        {    	OS_LOG_MESSAGE_HIGH(EHCD,"usbEhcdAddToFreeITDList - \                                Parameter not valid\n",0,0,0,0);        return FALSE;        }    /* Assert if the Allocated memory for the ITD is not valid */    OS_ASSERT(NULL != pITD->pAllocatedMem);    /* Store the allocated memory in a temporary pointer */    pAllocatedMem = pITD->pAllocatedMem;    /* Reinitialize the memory */    OS_MEMSET(pITD, 0, sizeof(USB_EHCD_ITD));    /* Copy the allocated memory pointer back */    pITD->pAllocatedMem = pAllocatedMem;    /* Wait on the signalling of the event */    OS_WAIT_FOR_EVENT(g_ListAccessEvent,OS_WAIT_INFINITE);    /* Update the next element of the ITD */    pITD->pNext = pHeadFreeITD;    /* Make this ITD as the head of the free list */    pHeadFreeITD = pITD;    /* If tail pointer is NULL, this ITD becomes the tail pointer */    if (NULL == pTailFreeITD)        {        pTailFreeITD = pITD;        }    /* Release the event */    OS_RELEASE_EVENT(g_ListAccessEvent);    OS_LOG_MESSAGE_LOW(EHCD,"usbEhcdAddToFreeITDList - Exit\n",0,0,0,0);    return TRUE;    }    /* End of usbEhcdAddToFreeITDList() *//***************************************************************************** usbEhcdAddToFreeSITDList - adds the SITD to the free list** This function is used to add a SITD to the free QH list.** <pSITD> Pointer to the USB_EHCD_ITD data structure.** RETURNS: TRUE if the SITD is added successfully.*          FALSE if the SITD is not added successfully.** ERRNO:*   None.** \NOMANUAL*/BOOLEAN usbEhcdAddToFreeSITDList    (    pUSB_EHCD_SITD pSITD    )    {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合自拍偷拍| 高清不卡一区二区| 91色porny蝌蚪| 国产日产欧美一区二区视频| 免费美女久久99| 欧美日韩在线三级| 亚洲一二三区在线观看| 欧美亚日韩国产aⅴ精品中极品| 1024成人网| 在线观看国产精品网站| 亚洲欧洲精品一区二区精品久久久| 国内外精品视频| 久久精品免视看| 9l国产精品久久久久麻豆| 国产精品网站一区| 一本色道**综合亚洲精品蜜桃冫| 亚洲三级在线看| 7777精品久久久大香线蕉| 三级一区在线视频先锋| 777a∨成人精品桃花网| 国产激情视频一区二区在线观看 | 男男gaygay亚洲| 久久综合狠狠综合久久激情| 国产91精品一区二区| 一区二区三区中文字幕精品精品| 欧美日本国产视频| 国产成人啪午夜精品网站男同| 亚洲色图一区二区| 久久精品国产色蜜蜜麻豆| 成人动漫视频在线| 丝袜a∨在线一区二区三区不卡| 日韩欧美在线观看一区二区三区| 国产高清久久久| 毛片av一区二区三区| 中文字幕在线一区| 久久伊99综合婷婷久久伊| 色婷婷国产精品久久包臀| 久久99日本精品| 一区二区三区精品在线观看| 久久人人97超碰com| 欧美三级一区二区| 99国内精品久久| 国产精品1区2区3区| 麻豆精品国产91久久久久久 | 欧美视频一区二区三区四区| 成人综合婷婷国产精品久久 | 亚洲免费观看视频| 国产午夜亚洲精品羞羞网站| 精品国精品国产| 欧美电影免费提供在线观看| 欧美日本精品一区二区三区| 欧美视频三区在线播放| 欧美伊人久久久久久久久影院| 91色.com| 欧美日韩在线播| 67194成人在线观看| 日韩一级精品视频在线观看| 91精品国产免费久久综合| 69堂成人精品免费视频| 日韩一区二区三免费高清| 91精品国产一区二区三区蜜臀| 欧美日韩一区二区三区免费看 | 国产乱妇无码大片在线观看| 国产精品资源网| 91视频在线观看免费| 欧美私人免费视频| 精品日韩99亚洲| 亚洲国产成人私人影院tom| 亚洲黄色片在线观看| 蜜臀久久99精品久久久久宅男| 美女国产一区二区三区| 黑人精品欧美一区二区蜜桃| 久久电影网电视剧免费观看| 久久精品免费看| 久久精品国产77777蜜臀| 国产精品综合久久| 99久久久国产精品免费蜜臀| 日本丶国产丶欧美色综合| 色爱区综合激月婷婷| 欧美精品乱码久久久久久按摩| 日韩欧美黄色影院| 国产精品免费视频观看| 亚洲一区二区视频在线观看| 日日摸夜夜添夜夜添国产精品| 五月天久久比比资源色| 国产一区二区三区四| 成人av在线网站| 亚洲另类在线视频| 亚洲欧洲成人自拍| 久久99精品一区二区三区| 国产成人一区在线| 色激情天天射综合网| 久久久久九九视频| 亚洲欧美日韩中文字幕一区二区三区| 一区二区三区四区在线免费观看 | 99久久精品免费| 精品久久久久久久人人人人传媒 | 日韩精品欧美精品| av在线不卡电影| 久久―日本道色综合久久| 亚洲成人资源在线| 国产成人h网站| 欧美一区三区四区| 国产精品免费av| 国产高清不卡一区二区| 在线一区二区三区做爰视频网站| 久久这里只有精品6| 久久精品国产精品亚洲红杏| 欧美精品久久天天躁| 午夜精品福利一区二区蜜股av| www.欧美日韩| 国产精品色婷婷| 99精品视频在线播放观看| 中文字幕av免费专区久久| 国产精品小仙女| 国产精品青草久久| 成人激情电影免费在线观看| 国产日韩欧美一区二区三区综合 | 日韩精品一区二区三区中文不卡 | 韩国成人精品a∨在线观看| 日韩欧美成人一区| 免费成人在线影院| 亚洲精品一区二区在线观看| 国产91露脸合集magnet| 国产精品你懂的在线欣赏| 91丝袜呻吟高潮美腿白嫩在线观看| 国产精品女同一区二区三区| 色嗨嗨av一区二区三区| 亚洲一区二区成人在线观看| 欧美一区三区四区| 国产激情一区二区三区四区 | 99久久精品国产毛片| 亚洲美女视频一区| 日韩女同互慰一区二区| 成人黄色av网站在线| 午夜日韩在线电影| 亚洲国产成人私人影院tom| 精品婷婷伊人一区三区三| 国产另类ts人妖一区二区| 亚洲婷婷综合色高清在线| 91精品在线麻豆| 久久综合九色综合欧美就去吻 | 色激情天天射综合网| 国内精品国产三级国产a久久| 国产精品女同一区二区三区| 欧美疯狂做受xxxx富婆| 成人app在线| 国产精品影视天天线| 蜜桃av一区二区三区电影| 亚洲黄一区二区三区| 中文字幕不卡一区| 久久综合色天天久久综合图片| 99久久99久久精品免费观看| 麻豆精品国产传媒mv男同| 午夜影院久久久| 中文字幕欧美一| 国产精品色哟哟网站| 国产农村妇女毛片精品久久麻豆 | 91精品视频网| 欧美精品tushy高清| 在线观看网站黄不卡| 91网站最新地址| 99在线精品一区二区三区| 成人av高清在线| 色综合久久综合网97色综合| 色婷婷亚洲婷婷| 欧美视频自拍偷拍| 欧美色倩网站大全免费| 欧美日韩一二三区| 日韩午夜在线观看视频| 日韩亚洲欧美一区二区三区| 91免费视频网址| 欧美日本一区二区| 欧美一区二区三区在线视频| 67194成人在线观看| 日韩欧美在线1卡| 国产精品进线69影院| 亚洲va中文字幕| 精品一区二区三区视频 | 97久久精品人人爽人人爽蜜臀| 99久久久免费精品国产一区二区| 91精品91久久久中77777| 欧美日韩二区三区| 国产欧美日韩亚州综合| 一区二区三区四区中文字幕| 蜜芽一区二区三区| 成人中文字幕在线| 欧美年轻男男videosbes| 8v天堂国产在线一区二区| 综合网在线视频| 福利视频网站一区二区三区| 91精品国产综合久久精品性色| 日韩理论在线观看| 波多野结衣欧美| 国产精品久久久久久久久快鸭| 国产一区二区免费视频| 精品盗摄一区二区三区| 久久91精品国产91久久小草| 欧美大片在线观看一区| 九九九久久久精品|