Changeset 58164 in vbox
- Timestamp:
- Oct 9, 2015 7:48:10 PM (9 years ago)
- svn:sync-xref-src-repo-rev:
- 103272
- Location:
- trunk/src/VBox/Devices/VMMDev
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/VMMDev/VMMDev.cpp
r58162 r58164 714 714 * (table full). 715 715 * @param pThis The VMMDev instance data. 716 * @param uFacility The facility type code - VBoxGuestFacilityType.716 * @param enmFacility The facility type code. 717 717 * @param fFixed This is set when allocating the standard entries 718 718 * from the constructor. … … 720 720 */ 721 721 static PVMMDEVFACILITYSTATUSENTRY 722 vmmdevAllocFacilityStatusEntry(PVMMDEV pThis, uint32_t uFacility, bool fFixed, PCRTTIMESPEC pTimeSpecNow)722 vmmdevAllocFacilityStatusEntry(PVMMDEV pThis, VBoxGuestFacilityType enmFacility, bool fFixed, PCRTTIMESPEC pTimeSpecNow) 723 723 { 724 724 /* If full, expunge one inactive entry. */ … … 728 728 while (i-- > 0) 729 729 { 730 if ( pThis->aFacilityStatuses[i]. uStatus == VBoxGuestFacilityStatus_Inactive730 if ( pThis->aFacilityStatuses[i].enmStatus == VBoxGuestFacilityStatus_Inactive 731 731 && !pThis->aFacilityStatuses[i].fFixed) 732 732 { … … 748 748 uint32_t i = pThis->cFacilityStatuses; 749 749 while (i-- > 0) 750 if ( pThis->aFacilityStatuses[i].uFacility < uFacility)750 if ((uint32_t)pThis->aFacilityStatuses[i].enmFacility < (uint32_t)enmFacility) 751 751 break; 752 752 i++; … … 760 760 761 761 /* Initialize. */ 762 pThis->aFacilityStatuses[i].uFacility = uFacility; 763 pThis->aFacilityStatuses[i].uStatus = VBoxGuestFacilityStatus_Inactive; 764 pThis->aFacilityStatuses[i].fFixed = fFixed; 765 pThis->aFacilityStatuses[i].fPadding = 0; 766 pThis->aFacilityStatuses[i].fFlags = 0; 767 pThis->aFacilityStatuses[i].uPadding = 0; 762 pThis->aFacilityStatuses[i].enmFacility = enmFacility; 763 pThis->aFacilityStatuses[i].enmStatus = VBoxGuestFacilityStatus_Inactive; 764 pThis->aFacilityStatuses[i].fFixed = fFixed; 765 pThis->aFacilityStatuses[i].afPadding[0] = 0; 766 pThis->aFacilityStatuses[i].afPadding[1] = 0; 767 pThis->aFacilityStatuses[i].afPadding[2] = 0; 768 pThis->aFacilityStatuses[i].fFlags = 0; 768 769 if (pTimeSpecNow) 769 770 pThis->aFacilityStatuses[i].TimeSpecTS = *pTimeSpecNow; … … 781 782 * (table full). 782 783 * @param pThis The VMMDev instance data. 783 * @param uFacility The facility type code - VBoxGuestFacilityType.784 */ 785 static PVMMDEVFACILITYSTATUSENTRY vmmdevGetFacilityStatusEntry(PVMMDEV pThis, uint32_t uFacility)784 * @param enmFacility The facility type code. 785 */ 786 static PVMMDEVFACILITYSTATUSENTRY vmmdevGetFacilityStatusEntry(PVMMDEV pThis, VBoxGuestFacilityType enmFacility) 786 787 { 787 788 /** @todo change to binary search. */ … … 789 790 while (i-- > 0) 790 791 { 791 if (pThis->aFacilityStatuses[i]. uFacility == uFacility)792 if (pThis->aFacilityStatuses[i].enmFacility == enmFacility) 792 793 return &pThis->aFacilityStatuses[i]; 793 if ( pThis->aFacilityStatuses[i].uFacility < uFacility)794 break; 795 } 796 return vmmdevAllocFacilityStatusEntry(pThis, uFacility, false /*fFixed*/, NULL);794 if ((uint32_t)pThis->aFacilityStatuses[i].enmFacility < (uint32_t)enmFacility) 795 break; 796 } 797 return vmmdevAllocFacilityStatusEntry(pThis, enmFacility, false /*fFixed*/, NULL); 797 798 } 798 799 … … 831 832 { 832 833 pThis->aFacilityStatuses[i].TimeSpecTS = Now; 833 pThis->aFacilityStatuses[i]. uStatus = (uint16_t)pStatus->status;834 pThis->aFacilityStatuses[i].enmStatus = pStatus->status; 834 835 pThis->aFacilityStatuses[i].fFlags = pStatus->flags; 835 836 } … … 845 846 846 847 pEntry->TimeSpecTS = Now; 847 pEntry-> uStatus = (uint16_t)pStatus->status; /** @todo r=andy uint16_t vs. 32-bit enum. */848 pEntry->enmStatus = pStatus->status; 848 849 pEntry->fFlags = pStatus->flags; 849 850 } … … 3518 3519 for (uint32_t i = 0; i < pThis->cFacilityStatuses; i++) 3519 3520 { 3520 SSMR3PutU32(pSSM, pThis->aFacilityStatuses[i]. uFacility);3521 SSMR3PutU32(pSSM, pThis->aFacilityStatuses[i].enmFacility); 3521 3522 SSMR3PutU32(pSSM, pThis->aFacilityStatuses[i].fFlags); 3522 SSMR3PutU16(pSSM, pThis->aFacilityStatuses[i].uStatus);3523 SSMR3PutU16(pSSM, (uint16_t)pThis->aFacilityStatuses[i].enmStatus); 3523 3524 SSMR3PutS64(pSSM, RTTimeSpecGetNano(&pThis->aFacilityStatuses[i].TimeSpecTS)); 3524 3525 } … … 3641 3642 AssertRCReturn(rc, rc); 3642 3643 3643 PVMMDEVFACILITYSTATUSENTRY pEntry = vmmdevGetFacilityStatusEntry(pThis, uFacility);3644 PVMMDEVFACILITYSTATUSENTRY pEntry = vmmdevGetFacilityStatusEntry(pThis, (VBoxGuestFacilityType)uFacility); 3644 3645 AssertLogRelMsgReturn(pEntry, 3645 3646 ("VMMDev: Ran out of entries restoring the guest facility statuses. Saved state has %u.\n", cFacilityStatuses), 3646 3647 VERR_OUT_OF_RESOURCES); 3647 pEntry-> uStatus =uStatus;3648 pEntry->fFlags = fFlags;3648 pEntry->enmStatus = (VBoxGuestFacilityStatus)uStatus; 3649 pEntry->fFlags = fFlags; 3649 3650 RTTimeSpecSetNano(&pEntry->TimeSpecTS, iTimeStampNano); 3650 3651 } … … 3697 3698 { 3698 3699 for (uint32_t i = 0; i < pThis->cFacilityStatuses; i++) /* ascending order! */ 3699 if ( pThis->aFacilityStatuses[i]. uStatus != VBoxGuestFacilityStatus_Inactive3700 if ( pThis->aFacilityStatuses[i].enmStatus != VBoxGuestFacilityStatus_Inactive 3700 3701 || !pThis->aFacilityStatuses[i].fFixed) 3701 3702 pThis->pDrv->pfnUpdateGuestStatus(pThis->pDrv, 3702 pThis->aFacilityStatuses[i]. uFacility,3703 pThis->aFacilityStatuses[i].uStatus,3703 pThis->aFacilityStatuses[i].enmFacility, 3704 (uint16_t)pThis->aFacilityStatuses[i].enmStatus, 3704 3705 pThis->aFacilityStatuses[i].fFlags, 3705 3706 &pThis->aFacilityStatuses[i].TimeSpecTS); … … 3814 3815 while (iFacility-- > 0) 3815 3816 { 3816 pThis->aFacilityStatuses[iFacility]. uStatus= VBoxGuestFacilityStatus_Inactive;3817 pThis->aFacilityStatuses[iFacility].enmStatus = VBoxGuestFacilityStatus_Inactive; 3817 3818 pThis->aFacilityStatuses[iFacility].TimeSpecTS = TimeStampNow; 3818 3819 } -
trunk/src/VBox/Devices/VMMDev/VMMDevState.h
r58161 r58164 93 93 typedef struct VMMDEVFACILITYSTATUSENTRY 94 94 { 95 /** The facility, see VBoxGuestFacilityType. */ 96 uint32_t uFacility; 97 /** The status, see VBoxGuestFacilityStatus. */ 98 /** @todo r=andy uint16_t vs. uint32_t (VBoxGuestFacilityStatus enum). */ 99 uint16_t uStatus; 95 /** The facility (may contain values other than the defined ones). */ 96 VBoxGuestFacilityType enmFacility; 97 /** The status (may contain values other than the defined ones). */ 98 VBoxGuestFacilityStatus enmStatus; 100 99 /** Whether this entry is fixed and cannot be reused when inactive. */ 101 bool fFixed;100 bool fFixed; 102 101 /** Explicit alignment padding / reserved for future use. MBZ. */ 103 bool fPadding;102 bool afPadding[3]; 104 103 /** The facility flags (yet to be defined). */ 105 uint32_t fFlags; 106 /** Explicit alignment padding / reserved for future use. MBZ. */ 107 uint32_t uPadding; 104 uint32_t fFlags; 108 105 /** Last update timestamp. */ 109 RTTIMESPEC TimeSpecTS;106 RTTIMESPEC TimeSpecTS; 110 107 } VMMDEVFACILITYSTATUSENTRY; 111 108 /** Pointer to a facility status entry. */
Note:
See TracChangeset
for help on using the changeset viewer.