VirtualBox

Changeset 37517 in vbox for trunk/include/VBox/vmm


Ignore:
Timestamp:
Jun 16, 2011 7:24:00 PM (14 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
72345
Message:

TM: Simplified the virtual sync timers by requiring changes to be done while holding the virtual sync lock. This means we can skip all the pending states and move timers on and off the active list immediately, avoiding the problems with timers being on the pending-scheduling list. Also made u64VirtualSync keep track of the last time stamp all the time (when under the lock) and thus really making sure time does not jump backwards.

Location:
trunk/include/VBox/vmm
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/tm.h

    r37452 r37517  
    217217VMMDECL(int)            TMTimerSet(PTMTIMER pTimer, uint64_t u64Expire);
    218218VMMDECL(int)            TMTimerSetRelative(PTMTIMER pTimer, uint64_t cTicksToNext, uint64_t *pu64Now);
     219VMMDECL(int)            TMTimerSetFrequencyHint(PTMTIMER pTimer, uint32_t uHz);
     220VMMDECL(uint64_t)       TMTimerGet(PTMTIMER pTimer);
     221VMMDECL(int)            TMTimerStop(PTMTIMER pTimer);
     222VMMDECL(bool)           TMTimerIsActive(PTMTIMER pTimer);
     223
    219224VMMDECL(int)            TMTimerSetMillies(PTMTIMER pTimer, uint32_t cMilliesToNext);
    220225VMMDECL(int)            TMTimerSetMicro(PTMTIMER pTimer, uint64_t cMicrosToNext);
    221226VMMDECL(int)            TMTimerSetNano(PTMTIMER pTimer, uint64_t cNanosToNext);
    222 VMMDECL(int)            TMTimerSetFrequencyHint(PTMTIMER pTimer, uint32_t uHz);
    223 VMMDECL(uint64_t)       TMTimerGet(PTMTIMER pTimer);
    224227VMMDECL(uint64_t)       TMTimerGetNano(PTMTIMER pTimer);
    225228VMMDECL(uint64_t)       TMTimerGetMicro(PTMTIMER pTimer);
     
    227230VMMDECL(uint64_t)       TMTimerGetFreq(PTMTIMER pTimer);
    228231VMMDECL(uint64_t)       TMTimerGetExpire(PTMTIMER pTimer);
    229 VMMDECL(uint64_t)       TMTimerToNano(PTMTIMER pTimer, uint64_t u64Ticks);
    230 VMMDECL(uint64_t)       TMTimerToMicro(PTMTIMER pTimer, uint64_t u64Ticks);
    231 VMMDECL(uint64_t)       TMTimerToMilli(PTMTIMER pTimer, uint64_t u64Ticks);
    232 VMMDECL(uint64_t)       TMTimerFromNano(PTMTIMER pTimer, uint64_t u64NanoTS);
    233 VMMDECL(uint64_t)       TMTimerFromMicro(PTMTIMER pTimer, uint64_t u64MicroTS);
    234 VMMDECL(uint64_t)       TMTimerFromMilli(PTMTIMER pTimer, uint64_t u64MilliTS);
    235 VMMDECL(int)            TMTimerStop(PTMTIMER pTimer);
    236 VMMDECL(bool)           TMTimerIsActive(PTMTIMER pTimer);
     232VMMDECL(uint64_t)       TMTimerToNano(PTMTIMER pTimer, uint64_t cTicks);
     233VMMDECL(uint64_t)       TMTimerToMicro(PTMTIMER pTimer, uint64_t cTicks);
     234VMMDECL(uint64_t)       TMTimerToMilli(PTMTIMER pTimer, uint64_t cTicks);
     235VMMDECL(uint64_t)       TMTimerFromNano(PTMTIMER pTimer, uint64_t cNanoSecs);
     236VMMDECL(uint64_t)       TMTimerFromMicro(PTMTIMER pTimer, uint64_t cMicroSecs);
     237VMMDECL(uint64_t)       TMTimerFromMilli(PTMTIMER pTimer, uint64_t cMilliSecs);
     238
    237239VMMDECL(bool)           TMTimerPollBool(PVM pVM, PVMCPU pVCpu);
    238240VMM_INT_DECL(void)      TMTimerPollVoid(PVM pVM, PVMCPU pVCpu);
  • trunk/include/VBox/vmm/vm.h

    r37464 r37517  
    10141014        struct TM   s;
    10151015#endif
    1016         uint8_t     padding[2176];      /* multiple of 64 */
     1016        uint8_t     padding[2432];      /* multiple of 64 */
    10171017    } tm;
    10181018
     
    10751075
    10761076    /** Padding for aligning the cpu array on a page boundary. */
    1077     uint8_t         abAlignment2[1118];
     1077    uint8_t         abAlignment2[862];
    10781078
    10791079    /* ---- end small stuff ---- */
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