VirtualBox

Changeset 19680 in vbox


Ignore:
Timestamp:
May 14, 2009 9:20:06 AM (16 years ago)
Author:
vboxsync
Message:

More locking

File:
1 edited

Legend:

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

    r19675 r19680  
    26702670int pgmPoolTrackFlushGCPhys(PVM pVM, PPGMPAGE pPhysPage, bool *pfFlushTLBs)
    26712671{
     2672    pgmLock(pVM);
    26722673    int rc = VINF_SUCCESS;
    26732674#ifdef PGMPOOL_WITH_GCPHYS_TRACKING
     
    27422743        rc = VINF_PGM_SYNC_CR3;
    27432744    }
    2744 
     2745    pgmUnlock(pVM);
    27452746    return rc;
    27462747}
     
    31533154uint16_t pgmPoolTrackPhysExtAddref(PVM pVM, uint16_t u16, uint16_t iShwPT)
    31543155{
     3156    pgmLock(pVM);
    31553157    if (PGMPOOL_TD_GET_CREFS(u16) != PGMPOOL_TD_CREFS_PHYSEXT)
    31563158    {
     
    31813183    else
    31823184        STAM_COUNTER_INC(&pVM->pgm.s.StatTrackAliasedLots);
     3185    pgmUnlock(pVM);
    31833186    return u16;
    31843187}
     
    32003203    if (iPhysExt != PGMPOOL_TD_IDX_OVERFLOWED)
    32013204    {
     3205        PVM pVM = pPool->CTX_SUFF(pVM);
     3206        pgmLock(pVM);
     3207
    32023208        uint16_t        iPhysExtPrev = NIL_PGMPOOL_PHYSEXT_INDEX;
    32033209        PPGMPOOLPHYSEXT paPhysExts = pPool->CTX_SUFF(paPhysExts);
     
    32193225                        {
    32203226                            Log2(("pgmPoolTrackPhysExtDerefGCPhys: pPhysPage=%R[pgmpage] idx=%d\n", pPhysPage, pPage->idx));
     3227                            pgmUnlock(pVM);
    32213228                            return;
    32223229                        }
    32233230
    32243231                    /* we can free the node. */
    3225                     PVM pVM = pPool->CTX_SUFF(pVM);
    32263232                    const uint16_t iPhysExtNext = paPhysExts[iPhysExt].iNext;
    32273233                    if (    iPhysExtPrev == NIL_PGMPOOL_PHYSEXT_INDEX
     
    32483254                    }
    32493255                    iPhysExt = iPhysExtNext;
     3256                    pgmUnlock(pVM);
    32503257                    return;
    32513258                }
     
    32573264        } while (iPhysExt != NIL_PGMPOOL_PHYSEXT_INDEX);
    32583265
     3266        pgmUnlock(pVM);
    32593267        AssertFatalMsgFailed(("not-found! cRefs=%d pPhysPage=%R[pgmpage] pPage=%p:{.idx=%d}\n", cRefs, pPhysPage, pPage, pPage->idx));
    32603268    }
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