VirtualBox

忽略:
時間撮記:
2008-10-4 下午11:20:58 (16 年 以前)
作者:
vboxsync
訊息:

#1865: PDMQueue.

檔案:
修改 1 筆資料

圖例:

未更動
新增
刪除
  • trunk/src/VBox/VMM/VMMAll/PDMAllQueue.cpp

    r11152 r12984  
    4949PDMDECL(PPDMQUEUEITEMCORE) PDMQueueAlloc(PPDMQUEUE pQueue)
    5050{
    51     Assert(VALID_PTR(pQueue) && pQueue->CTXSUFF(pVM));
     51    Assert(VALID_PTR(pQueue) && pQueue->CTX_SUFF(pVM));
    5252    PPDMQUEUEITEMCORE pNew;
    5353    uint32_t iNext;
     
    5858        if (i == pQueue->iFreeHead)
    5959            return NULL;
    60         pNew = pQueue->aFreeItems[i].CTXSUFF(pItem);
     60        pNew = pQueue->aFreeItems[i].CTX_SUFF(pItem);
    6161        iNext = (i + 1) % (pQueue->cItems + PDMQUEUE_FREE_SLACK);
    6262    } while (!ASMAtomicCmpXchgU32(&pQueue->iFreeTail, iNext, i));
     
    7676PDMDECL(void) PDMQueueInsert(PPDMQUEUE pQueue, PPDMQUEUEITEMCORE pItem)
    7777{
    78     Assert(VALID_PTR(pQueue) && pQueue->CTXSUFF(pVM));
     78    Assert(VALID_PTR(pQueue) && pQueue->CTX_SUFF(pVM));
    7979    Assert(VALID_PTR(pItem));
    8080
     
    8282    do
    8383    {
    84         pNext = pQueue->CTXSUFF(pPending);
    85         pItem->CTXSUFF(pNext) = pNext;
    86     } while (!ASMAtomicCmpXchgPtr((void * volatile *)&pQueue->CTXSUFF(pPending), pItem, pNext));
     84        pNext = pQueue->CTX_SUFF(pPending);
     85        pItem->CTX_SUFF(pNext) = pNext;
     86    } while (!ASMAtomicCmpXchgPtr((void * volatile *)&pQueue->CTX_SUFF(pPending), pItem, pNext));
    8787
    8888    if (!pQueue->pTimer)
    8989    {
    90         PVM pVM = pQueue->CTXSUFF(pVM);
     90        PVM pVM = pQueue->CTX_SUFF(pVM);
    9191        Log2(("PDMQueueInsert: VM_FF_PDM_QUEUES %d -> 1\n", VM_FF_ISSET(pVM, VM_FF_PDM_QUEUES)));
    9292        VM_FF_SET(pVM, VM_FF_PDM_QUEUES);
     
    114114    PDMQueueInsert(pQueue, pItem);
    115115#ifdef IN_GC
    116     PVM pVM = pQueue->CTXSUFF(pVM);
     116    PVM pVM = pQueue->CTX_SUFF(pVM);
    117117    /** @todo figure out where to put this, the next bit should go there too.
    118118    if (NanoMaxDelay)
     
    140140{
    141141    Assert(VALID_PTR(pQueue));
    142     Assert(pQueue->pVMHC && pQueue->pVMGC);
     142    Assert(pQueue->pVMR3 && pQueue->pVMRC);
    143143#ifdef IN_GC
    144144    return pQueue;
    145145#else
    146     return MMHyperCCToRC(pQueue->pVMHC, pQueue);
     146    return MMHyperCCToRC(pQueue->CTX_SUFF(pVM), pQueue);
    147147#endif
    148148}
     
    159159{
    160160    Assert(VALID_PTR(pQueue));
    161     Assert(pQueue->pVMHC && pQueue->pVMGC);
     161    Assert(pQueue->pVMR3 && pQueue->pVMR0);
    162162#ifdef IN_RING0
    163163    return pQueue;
    164164#else
    165     return MMHyperCCToR0(pQueue->CTXSUFF(pVM), pQueue);
     165    return MMHyperCCToR0(pQueue->CTX_SUFF(pVM), pQueue);
    166166#endif
    167167}
     
    176176{
    177177    Assert(VALID_PTR(pQueue));
    178     Assert(pQueue->pVMHC && pQueue->pVMGC);
    179     PVM pVM = CTXSUFF(pQueue->pVM);
     178    Assert(pQueue->pVMR3);
     179    PVM pVM = pQueue->CTX_SUFF(pVM);
     180
    180181#ifdef IN_GC
    181     pVM->pdm.s.CTXSUFF(pQueueFlush) = pQueue;
     182    Assert(pQueue->pVMRC);
     183    pVM->pdm.s.CTX_SUFF(pQueueFlush) = pQueue;
    182184    VMMGCCallHost(pVM, VMMCALLHOST_PDM_QUEUE_FLUSH, (uintptr_t)pQueue);
     185
    183186#elif defined(IN_RING0)
    184     pVM->pdm.s.CTXSUFF(pQueueFlush) = pQueue;
     187    Assert(pQueue->pVMR0);
     188    pVM->pdm.s.CTX_SUFF(pQueueFlush) = pQueue;
    185189    VMMR0CallHost(pVM, VMMCALLHOST_PDM_QUEUE_FLUSH, (uintptr_t)pQueue);
     190
    186191#else /* IN_RING3: */
    187192    PVMREQ pReq;
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette