Changeset 35887 in vbox
- Timestamp:
- Feb 8, 2011 8:36:00 AM (14 years ago)
- svn:sync-xref-src-repo-rev:
- 69899
- Location:
- trunk
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/VMMDev.h
r34754 r35887 4 4 5 5 /* 6 * Copyright (C) 2006-20 07Oracle Corporation6 * Copyright (C) 2006-2011 Oracle Corporation 7 7 * 8 8 * This file is part of VirtualBox Open Source Edition (OSE), as … … 670 670 /** 671 671 * Guest status facility. 672 * This needs to be kept in sync with AdditionsFacility of the Main API! 672 673 */ 673 674 typedef enum … … 676 677 VBoxGuestStatusFacility_VBoxGuestDriver = 20, 677 678 VBoxGuestStatusFacility_VBoxService = 100, 678 VBoxGuestStatusFacility_VBoxTray = 101,679 VBoxGuestStatusFacility_VBoxTrayClient = 101, /* VBoxTray (Windows), VBoxClient (Linux, Unix). */ 679 680 VBoxGuestStatusFacility_All = 999, 680 681 VBoxGuestStatusFacility_SizeHack = 0x7fffffff … … 682 683 AssertCompileSize(VBoxGuestStatusFacility, 4); 683 684 685 684 686 /** 685 687 * The current guest status of a facility. … … 689 691 VBoxGuestStatusCurrent_Disabled = 0, 690 692 VBoxGuestStatusCurrent_Inactive = 1, 693 VBoxGuestStatusCurrent_Paused = 2, 691 694 VBoxGuestStatusCurrent_PreInit = 20, 692 695 VBoxGuestStatusCurrent_Init = 30, … … 694 697 VBoxGuestStatusCurrent_Terminating = 100, 695 698 VBoxGuestStatusCurrent_Terminated = 101, 699 VBoxGuestStatusCurrent_Unknown = 999, 696 700 VBoxGuestStatusCurrent_SizeHack = 0x7fffffff 697 701 } VBoxGuestStatusCurrent; -
trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxHelpers.cpp
r35863 r35887 30 30 int hlpReportStatus(VBoxGuestStatusCurrent statusCurrent) 31 31 { 32 int rc = VbglR3ReportAdditionsStatus(VBoxGuestStatusFacility_VBoxTray ,32 int rc = VbglR3ReportAdditionsStatus(VBoxGuestStatusFacility_VBoxTrayClient, 33 33 statusCurrent, 34 34 0 /* Flags */); -
trunk/src/VBox/Frontends/VBoxManage/VBoxManageInfo.cpp
r35761 r35887 110 110 t.u8Hour, t.u8Minute, t.u8Second); 111 111 } 112 113 112 114 113 const char *stateToName(MachineState_T machineState, bool fShort) … … 787 786 } 788 787 789 /* get the maximum amount of NICS */ 788 /* get the maximum amount of NICS */ 790 789 ULONG maxNICs = getMaxNics(virtualBox, machine); 791 790 792 791 for (ULONG currentNIC = 0; currentNIC < maxNICs; currentNIC++) 793 792 { … … 2005 2004 RTPrintf("Guest:\n\n"); 2006 2005 2006 ULONG guestVal; 2007 rc = machine->COMGETTER(MemoryBalloonSize)(&guestVal); 2008 if (SUCCEEDED(rc)) 2009 { 2010 if (details == VMINFO_MACHINEREADABLE) 2011 RTPrintf("GuestMemoryBalloon=%d\n", guestVal); 2012 else 2013 RTPrintf("Configured memory balloon size: %d MB\n", guestVal); 2014 } 2015 2007 2016 if (console) 2008 2017 { … … 2043 2052 RTPrintf("Additions version: %lS\n\n", guestString.raw()); 2044 2053 } 2045 } 2046 } 2047 } 2048 2049 ULONG guestVal; 2050 rc = machine->COMGETTER(MemoryBalloonSize)(&guestVal); 2051 if (SUCCEEDED(rc)) 2052 { 2053 if (details == VMINFO_MACHINEREADABLE) 2054 RTPrintf("GuestMemoryBalloon=%d\n", guestVal); 2055 else 2056 RTPrintf("Configured memory balloon size: %d MB\n", guestVal); 2057 } 2054 2055 if (details != VMINFO_MACHINEREADABLE) 2056 RTPrintf("\nGuest Components:\n\n"); 2057 2058 /* Print information about important Guest Additions parts: */ 2059 /** @todo Add a makeFacilityStatusStr() to translate facility states into a human readable string! */ 2060 AdditionsFacilityStatus faStatus; 2061 LONGLONG lLastUpdatedMS = 0; 2062 char szLastUpdated[32]; 2063 rc = guest->GetFacilityStatus(AdditionsFacilityType_VBoxGuestDriver, &lLastUpdatedMS, &faStatus); 2064 if (SUCCEEDED(rc)) 2065 { 2066 makeTimeStr(szLastUpdated, sizeof(szLastUpdated), lLastUpdatedMS); 2067 if (details == VMINFO_MACHINEREADABLE) 2068 RTPrintf("GuestAdditionsFacilityStatusGuestDriver=%u,%ld\n", 2069 faStatus, lLastUpdatedMS); 2070 else 2071 RTPrintf("Guest driver: %u (last update: %s)\n", 2072 faStatus, szLastUpdated); 2073 } 2074 2075 rc = guest->GetFacilityStatus(AdditionsFacilityType_VBoxService, &lLastUpdatedMS, &faStatus); 2076 if (SUCCEEDED(rc)) 2077 { 2078 makeTimeStr(szLastUpdated, sizeof(szLastUpdated), lLastUpdatedMS); 2079 if (details == VMINFO_MACHINEREADABLE) 2080 RTPrintf("GuestAdditionsFacilityStatusVBoxService=%u,%ld\n", 2081 faStatus, lLastUpdatedMS); 2082 else 2083 RTPrintf("VBoxService: %u (last update: %s)\n", 2084 faStatus, szLastUpdated); 2085 } 2086 2087 rc = guest->GetFacilityStatus(AdditionsFacilityType_VBoxTrayClient, &lLastUpdatedMS, &faStatus); 2088 if (SUCCEEDED(rc)) 2089 { 2090 makeTimeStr(szLastUpdated, sizeof(szLastUpdated), lLastUpdatedMS); 2091 if (details == VMINFO_MACHINEREADABLE) 2092 RTPrintf("GuestAdditionsFacilityStatusVBoxTrayClient=%u,%ld\n", 2093 faStatus, lLastUpdatedMS); 2094 else 2095 RTPrintf("VBoxTray / VBoxClient: %u (last update: %s)\n", 2096 faStatus, szLastUpdated); 2097 } 2098 } 2099 } 2100 } 2101 2058 2102 if (details != VMINFO_MACHINEREADABLE) 2059 2103 RTPrintf("\n"); -
trunk/src/VBox/Main/idl/VirtualBox.xidl
r35886 r35887 7879 7879 7880 7880 <enum 7881 name="AdditionsFacilityType" 7882 uuid="bcf4f5e7-86d6-4b8c-99cd-449a79114fb4" 7883 > 7884 <desc> 7885 Guest Additions facility IDs. 7886 </desc> 7887 7888 <const name="None" value="0"> 7889 <desc>No/invalid facility.</desc> 7890 </const> 7891 <const name="VBoxGuestDriver" value="20"> 7892 <desc>VBoxGuest base driver.</desc> 7893 </const> 7894 <const name="VBoxService" value="100"> 7895 <desc>VBoxService.</desc> 7896 </const> 7897 <const name="VBoxTrayClient" value="101"> 7898 <desc>VBoxTray (Windows) / VBoxClient (Non-Windows).</desc> 7899 </const> 7900 <const name="All" value="999"> 7901 <desc>All facilities selected.</desc> 7902 </const> 7903 </enum> 7904 7905 <enum 7906 name="AdditionsFacilityStatus" 7907 uuid="f49bf8c0-e40b-44dd-9db5-8f4196bfda94" 7908 > 7909 <desc> 7910 Guest Additions facility states. 7911 </desc> 7912 7913 <const name="Disabled" value="0"> 7914 <desc>Facility is disabled.</desc> 7915 </const> 7916 <const name="Inactive" value="1"> 7917 <desc>Facility is enabled but inactive.</desc> 7918 </const> 7919 <const name="Paused" value="2"> 7920 <desc>Facility has been paused.</desc> 7921 </const> 7922 <const name="PreInit" value="20"> 7923 <desc>Facility is preparing to initialize.</desc> 7924 </const> 7925 <const name="Init" value="30"> 7926 <desc>Facility is initializing.</desc> 7927 </const> 7928 <const name="Active" value="50"> 7929 <desc>Facility is up and running.</desc> 7930 </const> 7931 <const name="Terminating" value="100"> 7932 <desc>Facility is shutting down.</desc> 7933 </const> 7934 <const name="Terminated" value="101"> 7935 <desc>Facility successfully shut down.</desc> 7936 </const> 7937 <const name="Unknown" value="999"> 7938 <desc>Facility status is unknown.</desc> 7939 </const> 7940 </enum> 7941 7942 <enum 7881 7943 name="AdditionsRunLevelType" 7882 7944 uuid="a25417ee-a9dd-4f5b-b0dc-377860087754" … … 8004 8066 <interface 8005 8067 name="IGuest" extends="$unknown" 8006 uuid=" 7ce7e4d8-cdaa-4d83-a0f4-510c8ee70aea"8068 uuid="09c2e2e0-f6f9-45ec-91a1-aaab3fad9f1f" 8007 8069 wsmap="managed" 8008 8070 > … … 8111 8173 <param name="memSharedTotal" type="unsigned long" dir="out"> 8112 8174 <desc>Total amount of shared memory in the hypervisor</desc> 8175 </param> 8176 </method> 8177 8178 <method name="getFacilityStatus"> 8179 <desc> 8180 Get the current status of a Guest Additions facility. 8181 </desc> 8182 <param name="facility" type="AdditionsFacilityType" dir="in"> 8183 <desc>Facility to check status for.</desc> 8184 </param> 8185 <param name="timestamp" type="long long" dir="out"> 8186 <desc>Timestamp (in ms) of last status update of this facility seen by the host.</desc> 8187 </param> 8188 <param name="status" type="AdditionsFacilityStatus" dir="return"> 8189 <desc>The current (latest) facility status.</desc> 8113 8190 </param> 8114 8191 </method> -
trunk/src/VBox/Main/include/GuestImpl.h
r35638 r35887 4 4 5 5 /* 6 * Copyright (C) 2006-201 0Oracle Corporation6 * Copyright (C) 2006-2011 Oracle Corporation 7 7 * 8 8 * This file is part of VirtualBox Open Source Edition (OSE), as … … 20 20 #include "VirtualBoxBase.h" 21 21 #include <iprt/list.h> 22 #include <iprt/time.h> 22 23 #include <VBox/ostypes.h> 23 24 … … 88 89 89 90 // IGuest methods 91 STDMETHOD(GetFacilityStatus)(AdditionsFacilityType aType, LONGLONG *aTimestamp, AdditionsFacilityStatus *aStatus); 90 92 STDMETHOD(GetAdditionsStatus)(AdditionsRunLevelType_T aLevel, BOOL *aActive); 91 93 STDMETHOD(SetCredentials)(IN_BSTR aUserName, IN_BSTR aPassword, … … 129 131 130 132 private: 131 132 // Internal tasks 133 #ifdef VBOX_WITH_GUEST_CONTROL 134 // Internal tasks. 133 135 struct TaskGuest; /* Worker thread helper. */ 134 #ifdef VBOX_WITH_GUEST_CONTROL135 136 HRESULT taskCopyFile(TaskGuest *aTask); 136 137 HRESULT taskUpdateGuestAdditions(TaskGuest *aTask); 137 138 139 // Internal callback context handling. 138 140 struct CallbackContext 139 141 { … … 183 185 # endif 184 186 187 struct FacilityData 188 { 189 RTTIMESPEC tsLastUpdated; 190 AdditionsFacilityStatus_T curStatus; 191 }; 192 typedef std::map< AdditionsFacilityType_T, FacilityData > FacilityMap; 193 typedef std::map< AdditionsFacilityType_T, FacilityData >::iterator FacilityMapIter; 194 185 195 struct Data 186 196 { … … 190 200 191 201 Bstr mOSTypeId; 202 203 FacilityMap mFacilityMap; 192 204 AdditionsRunLevelType_T mAdditionsRunLevel; 193 205 Bstr mAdditionsVersion; -
trunk/src/VBox/Main/src-client/GuestImpl.cpp
r35638 r35887 5 5 6 6 /* 7 * Copyright (C) 2006-201 0Oracle Corporation7 * Copyright (C) 2006-2011 Oracle Corporation 8 8 * 9 9 * This file is part of VirtualBox Open Source Edition (OSE), as … … 438 438 } 439 439 440 /** 441 * Returns the status of a specified Guest Additions facility. 442 * 443 * @return aStatus Current status of specified facility. 444 * @param aType Facility to get the status from. 445 * @param aTimestamp Timestamp of last facility status update in ms (optional). 446 */ 447 STDMETHODIMP Guest::GetFacilityStatus(AdditionsFacilityType aType, LONGLONG *aTimestamp, AdditionsFacilityStatus *aStatus) 448 { 449 AutoCaller autoCaller(this); 450 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 451 452 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 453 454 CheckComArgNotNull(aStatus); 455 /* Not checking for aTimestamp is intentional; it's optional. */ 456 457 FacilityMapIter it = mData.mFacilityMap.find(aType); 458 if (it != mData.mFacilityMap.end()) 459 { 460 *aStatus = it->second.curStatus; 461 if (aTimestamp) 462 *aTimestamp = RTTimeSpecGetMilli(&it->second.tsLastUpdated); 463 } 464 else 465 { 466 /* 467 * Do not fail here -- could be that the facility never has been brought up (yet) but 468 * the host wants to have its status anyway. So just tell we don't know at this point. 469 */ 470 *aStatus = AdditionsFacilityStatus_Unknown; 471 if (aTimestamp) 472 *aTimestamp = RTTimeMilliTS(); 473 } 474 return S_OK; 475 } 476 440 477 STDMETHODIMP Guest::GetAdditionsStatus(AdditionsRunLevelType_T aLevel, BOOL *aActive) 441 478 { … … 600 637 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); 601 638 639 /* 640 * Set overall additions run level. 641 */ 642 643 /* First check for disabled status. */ 602 644 uint32_t uCurFacility = Facility + (Status == VBoxGuestStatusCurrent_Active ? 0 : -1); 603 604 /* First check for disabled status. */605 645 if ( Facility < VBoxGuestStatusFacility_VBoxGuestDriver 606 646 || ( Facility == VBoxGuestStatusFacility_All … … 613 653 mData.mAdditionsRunLevel = AdditionsRunLevelType_None; 614 654 } 615 else if (uCurFacility >= VBoxGuestStatusFacility_VBoxTray )655 else if (uCurFacility >= VBoxGuestStatusFacility_VBoxTrayClient) 616 656 { 617 657 mData.mAdditionsRunLevel = AdditionsRunLevelType_Desktop; … … 627 667 else /* Should never happen! */ 628 668 AssertMsgFailed(("Invalid facility status/run level detected! uCurFacility=%ld\n", uCurFacility)); 669 670 /* 671 * Set a specific facility status. 672 */ 673 if (Facility) 674 { 675 Assert(Facility < UINT32_MAX); 676 FacilityData *pData = &mData.mFacilityMap[(AdditionsFacilityType_T)Facility]; 677 AssertPtr(pData); 678 679 RTTimeNow(&pData->tsLastUpdated); 680 pData->curStatus = (AdditionsFacilityStatus_T)Status; 681 682 LogFlowFunc(("Setting guest facility %u = %u (%u)\n", 683 Facility, pData->curStatus, pData->tsLastUpdated)); 684 } 629 685 } 630 686
Note:
See TracChangeset
for help on using the changeset viewer.