VirtualBox

Changeset 43086 in vbox for trunk/src/VBox/Devices/Graphics


Ignore:
Timestamp:
Aug 29, 2012 4:49:52 PM (13 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
80441
Message:

HGSMI: fix host flags racing

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Graphics/HGSMI/HGSMIHost.cpp

    r41783 r43086  
    6363#include <iprt/semaphore.h>
    6464#include <iprt/string.h>
     65#include <iprt/asm.h>
    6566
    6667#include <VBox/err.h>
     
    385386        {
    386387            if(pIns->pHGFlags)
    387                 pIns->pHGFlags->u32HostFlags &= (~HGSMIHOSTFLAGS_GCOMMAND_COMPLETED);
     388                ASMAtomicAndU32(&pIns->pHGFlags->u32HostFlags, (~HGSMIHOSTFLAGS_GCOMMAND_COMPLETED));
    388389        }
    389390
     
    534535            if(!pIns->hostFIFO.pHead)
    535536            {
    536                 pIns->pHGFlags->u32HostFlags &= (~HGSMIHOSTFLAGS_COMMANDS_PENDING);
     537                ASMAtomicAndU32(&pIns->pHGFlags->u32HostFlags, (~HGSMIHOSTFLAGS_COMMANDS_PENDING));
    537538            }
    538539
     
    560561    if (pIns->pfnNotifyGuest)
    561562    {
    562 //        pIns->pHGFlags->u32HostFlags |= HGSMIHOSTFLAGS_IRQ;
    563563        pIns->pfnNotifyGuest (pIns->pvNotifyGuest);
    564564    }
     
    567567void HGSMISetHostGuestFlags(HGSMIINSTANCE *pIns, uint32_t flags)
    568568{
    569     pIns->pHGFlags->u32HostFlags |= flags;
     569    ASMAtomicOrU32(&pIns->pHGFlags->u32HostFlags, flags);
    570570}
    571571
    572572void HGSMIClearHostGuestFlags(HGSMIINSTANCE *pIns, uint32_t flags)
    573573{
    574     pIns->pHGFlags->u32HostFlags &= (~flags);
     574    ASMAtomicAndU32(&pIns->pHGFlags->u32HostFlags, (~flags));
    575575}
    576576
     
    901901        {
    902902            hgsmiListAppend (&pIns->hostFIFO, &pEntry->entry);
    903             pIns->pHGFlags->u32HostFlags |= HGSMIHOSTFLAGS_COMMANDS_PENDING;
     903            ASMAtomicOrU32(&pIns->pHGFlags->u32HostFlags, HGSMIHOSTFLAGS_COMMANDS_PENDING);
    904904
    905905            hgsmiFIFOUnlock(pIns);
     
    17051705        {
    17061706            hgsmiListAppend (&pIns->guestCmdCompleted, &pEntry->entry);
    1707             pIns->pHGFlags->u32HostFlags |= HGSMIHOSTFLAGS_GCOMMAND_COMPLETED;
     1707            ASMAtomicOrU32(&pIns->pHGFlags->u32HostFlags, HGSMIHOSTFLAGS_GCOMMAND_COMPLETED);
    17081708
    17091709            hgsmiFIFOUnlock(pIns);
Note: See TracChangeset for help on using the changeset viewer.

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