VirtualBox

Changeset 29902 in vbox for trunk/src/VBox/VMM/VMMAll


Ignore:
Timestamp:
May 31, 2010 12:56:31 PM (15 years ago)
Author:
vboxsync
Message:

PDM: Flushed out the PDMQueueFlush code as its unused and problematic wrt guest SMP.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/PDMAllQueue.cpp

    r28800 r29902  
    7979    Assert(VALID_PTR(pItem));
    8080
     81#if 0 /* the paranoid android version: */
     82    void *pvNext;
     83    do
     84    {
     85        pvNext = ASMAtomicUoReadPtr((void * volatile *)&pQueue->CTX_SUFF(pPending));
     86        ASMAtomicUoWritePtr((void * volatile *)&pItem->CTX_SUFF(pNext), pvNext);
     87    } while (!ASMAtomicCmpXchgPtr((void * volatile *)&pQueue->CTX_SUFF(pPending), pItem, pvNext));
     88#else
    8189    PPDMQUEUEITEMCORE pNext;
    8290    do
     
    8593        pItem->CTX_SUFF(pNext) = pNext;
    8694    } while (!ASMAtomicCmpXchgPtr((void * volatile *)&pQueue->CTX_SUFF(pPending), pItem, pNext));
     95#endif
    8796
    8897    if (!pQueue->pTimer)
     
    170179}
    171180
    172 
    173 /**
    174  * Flushes a PDM queue.
    175  *
    176  * @param   pQueue          The queue handle.
    177  */
    178 VMMDECL(void) PDMQueueFlush(PPDMQUEUE pQueue)
    179 {
    180     Assert(VALID_PTR(pQueue));
    181     Assert(pQueue->pVMR3);
    182     PVM pVM = pQueue->CTX_SUFF(pVM);
    183 
    184 #if defined(IN_RC) || defined(IN_RING0)
    185     Assert(pQueue->CTX_SUFF(pVM));
    186     pVM->pdm.s.CTX_SUFF(pQueueFlush) = pQueue;
    187     VMMRZCallRing3NoCpu(pVM, VMMCALLRING3_PDM_QUEUE_FLUSH, (uintptr_t)pQueue);
    188 
    189 #else /* IN_RING3: */
    190     VMR3ReqCallWait(pVM, VMCPUID_ANY, (PFNRT)PDMR3QueueFlushWorker, 2, pVM, pQueue);
    191 #endif
    192 }
Note: See TracChangeset for help on using the changeset viewer.

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