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

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

?? mem.hpp

?? ISP1161 USB Driver under WinCE for StrongARM processor implementation
?? HPP
字號:
/*++
THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
PARTICULAR PURPOSE.
Copyright (c) 1995, 1996, 1997, 1998  Microsoft Corporation

Module Name:  
    mem.hpp

Abstract:  
    Definitions for OHCD memory manager.
    
Notes: 

--*/
#ifndef _MEM_HPP_
#define _MEM_HPP_

#define USBPAGESIZE 4096    // Spec'ed to be 4kB
#define USBPAGEMASK USBPAGESIZE - 1

//
// Hook these if you want to track local memory allocations.
//
#define OHCD_Alloc  LocalAlloc
#define OHCD_Free   LocalFree

#define MEMLIST_NEXT_PA(pnode)  (pnode->dwPhysAddr + pnode->dwSize)


typedef struct tMEMLIST   MEMLIST;
typedef struct tMEMLIST* PMEMLIST;
struct tMEMLIST
{
    DWORD       dwVirtAddr;
    DWORD       dwPhysAddr;
    DWORD       dwSize;
    PMEMLIST    next;
    PMEMLIST    prev;
};




LPVOID AllocatePhysicalMemory(UINT cbSize, LPULONG ppaBuffer);
BOOL FreePhysicalMemory(LPVOID lpMemory, UINT cbSize);


#ifdef DEBUG
#define VALIDATE_HEAPS(fHighPri)  ValidateHeaps(fHighPri)
#else
#define VALIDATE_HEAPS(fHighPri)
#endif


//
// Flag defines for AllocateMemory / FreeMemory
//
#define USBALLOCF_SPECIAL       0x0001  // Special USBPAGE allocation
#define USBALLOCF_HIGHPRIORITY  0x0002  // Allocates from High Priority region first
#define USBALLOCF_NOBLOCK       0x0004  // Call doesn't block if no memory available.

class CPhysMem
{
public:
    CPhysMem(DWORD cbSize, DWORD cbHighPrioritySize, PUCHAR pVirtAddr, PUCHAR pPhysAddr);
    ~CPhysMem();

    EError
    AllocateMemory(
        UINT size,
        PUCHAR *pVirtAddr,
        ULONG *pPhysAddr,
        DWORD dwFlags = 0,
        BOOL* pfRequestingAbort = NULL);

    EError
    FreeMemory(
        PUCHAR virtAddr,
        ULONG physAddr,
        DWORD dwFlags = 0);

    EError
    ReleaseBlockedCalls();

    inline ULONG
    VaToPa(PUCHAR virtAddr);

    inline PUCHAR
    PaToVa(ULONG physAddr);

#ifdef DEBUG
    BOOL ValidateHeaps(BOOL fHighPri);

    EError DebugAllocateMemory(UINT size, PUCHAR * pVirtAddr,
            ULONG *pPhysAddr, DWORD dwFlags, BOOL * pfRequestingAbort,
            TCHAR *szFile, DWORD dwLine);

    EError DebugFreeMemory(PUCHAR virtAddr,ULONG physAddr,DWORD dwFlags,
            TCHAR *szFile, DWORD dwLine);

#endif

private:
    EError AddNodeToInUseList(PMEMLIST pNode, BOOL fHighPri);
    EError AddNodeToFreeList(PMEMLIST pNode, BOOL fHighPri);
    
    EError DeleteNode(PMEMLIST pNode);
    
    PMEMLIST CreateNewNode(DWORD dwSize, DWORD dwVirtAddr, DWORD dwPhysAddr);
    
    PMEMLIST FindFreeBlock(DWORD dwSize, BOOL fHighPri);
    EError RemoveNodeFromList(PMEMLIST pNode, PMEMLIST* pListHead);
    EError FreeList(PMEMLIST *ppHead);


    CRITICAL_SECTION m_csLock;
    HANDLE      m_hFreeMemEvent;

    // This is initially FALSE. It is set to TRUE when a thread blocks in
    // AllocateMemory and is never reset back to FALSE. While m_fHaveWaited
    // is FALSE, we won't pulse m_hFreeMemEvent on free and release calls.
    // This works around a performance problem in the kernel dealing with
    // manual-reset events but only until memory starts to become scarce.
    BOOL        m_fHaveWaited;

    DWORD       m_PaVaConversion;
    DWORD       m_dwTotalPhysMemSize;
    PUCHAR      m_pPhysicalBufferAddr;

    PMEMLIST    m_pNodeFreeListHead;
    
    DWORD       m_dwSpecialPA;
    DWORD       m_dwSpecialVA;
    BOOL        m_bSpecialTaken;
    
    DWORD       m_dwNormalPA;
    DWORD       m_dwNormalVA;
    DWORD       m_dwNormalSize;
    PMEMLIST    m_pInUseListHead;
    PMEMLIST    m_pFreeListHead;
    
    DWORD       m_dwHighPriorityPA;
    DWORD       m_dwHighPriorityVA;
    DWORD       m_dwHighPrioritySize;
    PMEMLIST    m_pHighPriorityInUseListHead;
    PMEMLIST    m_pHighPriorityFreeListHead;
};


#define FREELIST(fHighPri)  (fHighPri ? m_pHighPriorityFreeListHead : m_pFreeListHead)
#define INUSELIST(fHighPri) (fHighPri ? m_pHighPriorityInUseListHead : m_pInUseListHead)

inline ULONG
CPhysMem::VaToPa(PUCHAR virtAddr)
{
    if (virtAddr == NULL)
    {
        return(0);
    }
    else
    {
        return((ULONG)((ULONG)virtAddr + m_PaVaConversion));
    }
}

inline PUCHAR
CPhysMem::PaToVa(ULONG physAddr)
{
    if (physAddr == 0)
    {
        return(NULL);
    }
    else
    {
        return((PUCHAR)(physAddr - m_PaVaConversion));
    }
}


//---------------------------------------------------------------------
//
// Linked list helper functions
//
#define IsListEmpty(_ListHead)          ((_ListHead)->next == _ListHead)
#define EndOfList(_ListHead, _Entry)    (_ListHead == _Entry)

inline void
InitializeListHead(PMEMLIST _ListHead)
{
    _ListHead->next = _ListHead->prev = _ListHead;
}


inline PMEMLIST
FirstNode(
    PMEMLIST _ListHead
    ) 
{ 
    return(_ListHead->next); 
}


inline void
RemoveNode(
    PMEMLIST pNode
    )
{
    pNode->prev->next = pNode->next;
    pNode->next->prev = pNode->prev;
    pNode->next = NULL;
    pNode->prev = NULL;
}


inline void
InsertNodeBefore(
    PMEMLIST pNodeNew,
    PMEMLIST pNodeExisting
    )
{
    pNodeExisting->prev->next = pNodeNew;
    pNodeNew->prev = pNodeExisting->prev;
    pNodeNew->next = pNodeExisting;
    pNodeExisting->prev = pNodeNew;
}

#ifdef  DEBUG

#define     ALLOC_PHYS_MEM(poPhysMem, size, pVirtAddr, pPhysAddr, dwFlags, pfRequestingAbort) \
        poPhysMem->DebugAllocateMemory(size, pVirtAddr, pPhysAddr, dwFlags, pfRequestingAbort, \
                TEXT(__FILE__), (DWORD)__LINE__)

#define     FREE_PHYS_MEM(poPhysMem, virtAddr, physAddr, dwFlags) \
        poPhysMem->DebugFreeMemory(virtAddr, physAddr, dwFlags, \
                TEXT(__FILE__), (DWORD)__LINE__)

#else // DEBUG

#define     ALLOC_PHYS_MEM(poPhysMem, size, pVirtAddr, pPhysAddr, dwFlags, pfRequestingAbort) \
        poPhysMem->AllocateMemory(size, pVirtAddr, pPhysAddr, dwFlags, pfRequestingAbort)

#define     FREE_PHYS_MEM(poPhysMem, virtAddr, physAddr, dwFlags) \
        poPhysMem->FreeMemory(virtAddr, physAddr, dwFlags)

#endif  //DEBUG

#endif //_MEM_HPP_

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆文化传媒在线观看| 亚洲一区在线观看免费 | 99久久精品国产网站| 26uuu精品一区二区三区四区在线| 日韩高清不卡一区二区| 日韩一区二区在线免费观看| 日韩制服丝袜av| 日韩精品专区在线影院重磅| 精品中文字幕一区二区小辣椒| 精品日本一线二线三线不卡| 国产一区免费电影| 中文字幕在线一区免费| 在线免费不卡视频| 亚洲电影一级片| 欧美不卡一区二区三区四区| 国产高清在线精品| 亚洲裸体在线观看| 在线电影欧美成精品| 另类综合日韩欧美亚洲| 久久九九全国免费| 色哟哟国产精品| 奇米精品一区二区三区在线观看一| 精品女同一区二区| 99久久久免费精品国产一区二区| 亚洲美女一区二区三区| 日韩精品一区在线观看| 丰满亚洲少妇av| 亚洲国产精品尤物yw在线观看| 欧美一区二区福利在线| 不卡一区中文字幕| 日韩精品福利网| 国产精品网站一区| 在线播放中文字幕一区| 高清不卡一二三区| 一区二区三区 在线观看视频| 日韩丝袜情趣美女图片| av综合在线播放| 麻豆91精品91久久久的内涵| 亚洲色大成网站www久久九九| 日韩一级大片在线| 色综合天天综合网天天看片| 久久成人综合网| 一区二区三区在线视频播放| 国产三级一区二区| 日韩三级.com| 日本韩国欧美国产| 国产成人精品亚洲777人妖 | 欧美少妇一区二区| 成人黄色大片在线观看| 久久精品久久综合| 亚洲成人激情综合网| 国产精品入口麻豆原神| 91精品国产综合久久福利| 99久久国产综合精品色伊| 久久成人精品无人区| 亚洲午夜在线视频| 亚洲女人的天堂| 国产欧美一区二区三区网站| 欧美成人免费网站| 宅男噜噜噜66一区二区66| 91行情网站电视在线观看高清版| 国产成人精品亚洲日本在线桃色 | 亚洲免费观看高清在线观看| 久久久久综合网| 精品奇米国产一区二区三区| 91麻豆精品91久久久久久清纯| 色播五月激情综合网| 成人激情黄色小说| 成人免费看黄yyy456| 国产成人精品1024| 国产美女精品一区二区三区| 奇米精品一区二区三区在线观看| 亚洲18色成人| 亚洲高清久久久| 亚洲男人的天堂在线观看| 亚洲麻豆国产自偷在线| 亚洲欧美国产高清| 亚洲黄色性网站| 亚洲制服丝袜一区| 亚洲mv大片欧洲mv大片精品| 亚洲成a人v欧美综合天堂下载 | 日韩一区二区在线观看视频| 欧美日韩大陆在线| 欧美精品自拍偷拍| 欧美一区二区三区视频| 欧美一区二区福利在线| 精品国精品国产| 久久久99精品免费观看不卡| 国产午夜亚洲精品羞羞网站| 国产精品网友自拍| 亚洲人123区| 亚洲国产日日夜夜| 日本91福利区| 韩国精品在线观看| 风间由美一区二区av101| 色综合久久综合| 欧美久久久久久蜜桃| 欧美videofree性高清杂交| 亚洲精品在线观看网站| 中文av一区特黄| 亚洲精品成人少妇| 久色婷婷小香蕉久久| 国产91精品久久久久久久网曝门| 国产99一区视频免费| 在线精品视频免费播放| 日韩三级伦理片妻子的秘密按摩| 久久九九99视频| 一区二区三区日韩| 久久99久久精品| 99久久国产综合色|国产精品| 欧美三区在线观看| 精品国产乱码久久久久久1区2区| 国产欧美日本一区视频| 亚洲一区视频在线| 国内精品伊人久久久久av影院| 成人午夜短视频| 欧美美女喷水视频| 久久精品夜夜夜夜久久| 一区二区三区美女视频| 国精产品一区一区三区mba桃花| 成人黄色一级视频| 欧美一二三区在线| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 97精品国产露脸对白| 51午夜精品国产| 国产精品传媒在线| 麻豆一区二区在线| 欧美丝袜丝nylons| 中文字幕欧美激情一区| 日韩二区在线观看| 91首页免费视频| 久久午夜羞羞影院免费观看| 夜夜精品视频一区二区| 成人黄动漫网站免费app| 67194成人在线观看| 中文字幕亚洲视频| 国产一区二区三区在线观看免费视频 | 日韩三级电影网址| 亚洲综合久久av| 国产夫妻精品视频| 7799精品视频| 亚洲精品美腿丝袜| 国产成人小视频| 欧美一区二区三区日韩视频| 亚洲一区二区三区不卡国产欧美 | 91在线高清观看| 久久色在线视频| 天天影视网天天综合色在线播放| av不卡免费在线观看| 国产亚洲va综合人人澡精品| 麻豆一区二区在线| 欧美一区二区私人影院日本| 亚洲综合激情小说| 99re成人精品视频| 中文字幕成人av| 国产成人av电影免费在线观看| 日韩欧美国产综合| 秋霞午夜av一区二区三区| 欧美少妇bbb| 午夜伊人狠狠久久| 欧洲生活片亚洲生活在线观看| 国产精品美日韩| 岛国精品在线播放| 国产精品日日摸夜夜摸av| 国产白丝网站精品污在线入口| 欧美精品一区男女天堂| 久久精品国产秦先生| 日韩精品影音先锋| 激情深爱一区二区| 精品国产乱码久久久久久闺蜜| 美女性感视频久久| 日韩美女在线视频 | 国产精品精品国产色婷婷| 国产精品亚洲成人| 久久精品人人做人人综合 | 欧美三级在线播放| 亚州成人在线电影| 欧美一区二区黄| 黄一区二区三区| 欧美激情综合五月色丁香| 99久久er热在这里只有精品15 | 国产午夜精品美女毛片视频| 国产成人在线视频网站| 国产精品初高中害羞小美女文| 波多野结衣精品在线| 亚洲精品高清视频在线观看| 欧美日本一区二区在线观看| 日韩精品一级二级 | 蜜臀av国产精品久久久久| 欧美大片在线观看一区二区| 国产一区二三区| 亚洲女同女同女同女同女同69| 欧美色网一区二区| 久久电影国产免费久久电影| 国产精品欧美久久久久无广告| 91麻豆国产福利精品| 五月婷婷综合网| 久久久三级国产网站| 91啪九色porn原创视频在线观看| 亚洲超碰精品一区二区|