Changeset 81137 in vbox for trunk/src/VBox
- Timestamp:
- Oct 8, 2019 8:28:31 AM (5 years ago)
- svn:sync-xref-src-repo-rev:
- 133770
- Location:
- trunk/src/VBox
- Files:
-
- 1 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/glue/VBoxLogRelCreate.cpp
r81131 r81137 86 86 87 87 RTSYSFWTYPE enmType; 88 vrc = RTSystem FirmwareQueryType(&enmType);88 vrc = RTSystemQueryFirmwareType(&enmType); 89 89 if (RT_SUCCESS(vrc)) 90 90 { 91 pfnLog(pReleaseLogger, "Firmware type: "); 92 93 switch (enmType) 94 { 95 case RTSYSFWTYPE_BIOS: 96 pfnLog(pReleaseLogger, "BIOS\n"); 97 break; 98 case RTSYSFWTYPE_UEFI: 99 pfnLog(pReleaseLogger, "UEFI\n"); 100 break; 101 case RTSYSFWTYPE_UNKNOWN: /* Not implemented on this platforms? */ 102 pfnLog(pReleaseLogger, "Unknown\n"); 103 break; 104 default: 105 AssertFailed(); 106 break; 107 } 108 91 pfnLog(pReleaseLogger, "Firmware type: %s\n", RTSystemFirmwareTypeName(enmType)); 109 92 if (enmType == RTSYSFWTYPE_UEFI) 110 93 { 111 RTSYSFWVALUEValue;112 vrc = RTSystem FirmwareQueryValue(RTSYSFWPROP_SECURE_BOOT, &Value);94 bool fValue; 95 vrc = RTSystemQueryFirmwareBoolean(RTSYSFWPROP_SECURE_BOOT, &fValue); 113 96 if (RT_SUCCESS(vrc)) 114 { 115 Assert(Value.enmType == RTSYSFWVALUETYPE_BOOLEAN); 116 pfnLog(pReleaseLogger, "Secure Boot: %s\n", Value.u.fVal ? "Enabled" : "Disabled"); 117 RTSystemFirmwareFreeValue(&Value); 118 } 97 pfnLog(pReleaseLogger, "Secure Boot: %s\n", fValue ? "Enabled" : "Disabled"); 98 else 99 pfnLog(pReleaseLogger, "Secure Boot: %Rrc\n", vrc); 119 100 } 120 101 } 102 else 103 pfnLog(pReleaseLogger, "Firmware type: failed - %Rrc\n", vrc); 121 104 122 105 uint64_t cbHostRam = 0, cbHostRamAvail = 0; … … 154 137 break; 155 138 } 139 156 140 case RTLOGPHASE_PREROTATE: 157 141 pfnLog(pReleaseLogger, "Log rotated - Log started %s\n", szTmp); -
trunk/src/VBox/Runtime/Makefile.kmk
r81079 r81137 484 484 common/misc/RTFileOpenV.cpp \ 485 485 common/misc/RTMemWipeThoroughly.cpp \ 486 common/misc/RTSystemFirmwareTypeName.cpp \ 486 487 common/misc/assert.cpp \ 487 488 common/misc/buildconfig.cpp \ -
trunk/src/VBox/Runtime/generic/RTSystemFirmware-generic.cpp
r81062 r81137 36 36 37 37 38 RTDECL(int) RTSystem FirmwareQueryType(PRTSYSFWTYPE penmFirmwareType)38 RTDECL(int) RTSystemQueryFirmwareType(PRTSYSFWTYPE penmFirmwareType) 39 39 { 40 40 RT_NOREF(penmFirmwareType); … … 42 42 return VERR_NOT_SUPPORTED; 43 43 } 44 RT_EXPORT_SYMBOL(RTSystem FirmwareQueryType);44 RT_EXPORT_SYMBOL(RTSystemQueryFirmwareType); 45 45 46 46 47 RTDECL( void) RTSystemFirmwareFreeValue(PRTSYSFWVALUE pValue)47 RTDECL(int) RTSystemQueryFirmwareBoolean(RTSYSFWPROP enmProp, bool *pfValue) 48 48 { 49 RT_NOREF(pValue); 50 } 51 RT_EXPORT_SYMBOL(RTSystemFirmwareFreeValue); 52 53 54 RTDECL(int) RTSystemFirmwareQueryValue(RTSYSFWPROP enmProp, PRTSYSFWVALUE pValue) 55 { 56 RT_ZERO(*pValue); 57 RT_NOREF(enmProp); 49 RT_NOREF(enmProp, pfValue); 58 50 return VERR_NOT_SUPPORTED; 59 51 } 60 RT_EXPORT_SYMBOL(RTSystem FirmwareQueryValue);52 RT_EXPORT_SYMBOL(RTSystemQueryFirmwareBoolean); 61 53 -
trunk/src/VBox/Runtime/r3/linux/RTSystemFirmware-linux.cpp
r81068 r81137 45 45 46 46 47 RTDECL(int) RTSystem FirmwareQueryType(PRTSYSFWTYPE penmFirmwareType)47 RTDECL(int) RTSystemQueryFirmwareType(PRTSYSFWTYPE penmFirmwareType) 48 48 { 49 49 if (RTLinuxSysFsExists("firmware/efi/")) … … 58 58 return VINF_SUCCESS; 59 59 } 60 RT_EXPORT_SYMBOL(RTSystem FirmwareQueryType);60 RT_EXPORT_SYMBOL(RTSystemQueryFirmwareType); 61 61 62 62 63 RTDECL( void) RTSystemFirmwareFreeValue(PRTSYSFWVALUE pValue)63 RTDECL(int) RTSystemQueryFirmwareBoolean(RTSYSFWPROP enmProp, bool *pfValue) 64 64 { 65 RT_NOREF(pValue); 66 } 67 RT_EXPORT_SYMBOL(RTSystemFirmwareFreeValue); 68 69 70 RTDECL(int) RTSystemFirmwareQueryValue(RTSYSFWPROP enmProp, PRTSYSFWVALUE pValue) 71 { 72 RT_ZERO(*pValue); 65 *pfValue = false; 73 66 74 67 /* 75 * Translate the property into type andvariable base filename.68 * Translate the property to variable base filename. 76 69 */ 77 70 const char *pszName; … … 79 72 { 80 73 case RTSYSFWPROP_SECURE_BOOT: 81 pValue->enmType = RTSYSFWVALUETYPE_BOOLEAN;82 74 pszName = "firmware/efi/efivars/SecureBoot"; 83 75 break; … … 95 87 int rc = RTLinuxSysFsOpen(&hFile, "%s-" VBOX_UEFI_UUID_GLOBALS, pszName); 96 88 /** @todo try other suffixes if file-not-found. */ 97 98 switch (pValue->enmType) 89 if (RT_SUCCESS(rc)) 99 90 { 100 case RTSYSFWVALUETYPE_BOOLEAN: 101 { 102 if (RT_SUCCESS(rc)) 103 { 104 uint8_t abBuf[16]; 105 size_t cbRead = 0; 106 rc = RTLinuxSysFsReadFile(hFile, abBuf, sizeof(abBuf), &cbRead); 107 pValue->u.fVal = cbRead > 1 && abBuf[cbRead - 1] != 0; 108 RTFileClose(hFile); 109 } 110 else if (rc == VERR_FILE_NOT_FOUND || rc == VERR_PATH_NOT_FOUND) 111 rc = VINF_SUCCESS; 112 else if (rc == VERR_PERMISSION_DENIED) 113 rc = VERR_NOT_SUPPORTED; 114 break; 115 } 116 117 default: 118 AssertFailedReturn(VERR_INTERNAL_ERROR); 91 uint8_t abBuf[16]; 92 size_t cbRead = 0; 93 rc = RTLinuxSysFsReadFile(hFile, abBuf, sizeof(abBuf), &cbRead); 94 *pfValue = cbRead > 1 && abBuf[cbRead - 1] != 0; 95 RTFileClose(hFile); 119 96 } 97 else if (rc == VERR_FILE_NOT_FOUND || rc == VERR_PATH_NOT_FOUND) 98 rc = VINF_SUCCESS; 99 else if (rc == VERR_PERMISSION_DENIED) 100 rc = VERR_NOT_SUPPORTED; 120 101 121 102 return rc; 122 103 } 123 RT_EXPORT_SYMBOL(RTSystem FirmwareQueryValue);104 RT_EXPORT_SYMBOL(RTSystemQueryFirmwareBoolean); 124 105 -
trunk/src/VBox/Runtime/r3/win/RTSystemFirmware-win.cpp
r81063 r81137 119 119 120 120 121 RTDECL(int) RTSystem FirmwareQueryType(PRTSYSFWTYPE penmFirmwareType)121 RTDECL(int) RTSystemQueryFirmwareType(PRTSYSFWTYPE penmFirmwareType) 122 122 { 123 123 AssertPtrReturn(penmFirmwareType, VERR_INVALID_POINTER); … … 173 173 174 174 175 RTDECL(void) RTSystemFirmwareFreeValue(PRTSYSFWVALUE pValue) 176 { 177 RT_NOREF(pValue); 178 } 179 180 181 RTDECL(int) RTSystemFirmwareQueryValue(RTSYSFWPROP enmProp, PRTSYSFWVALUE pValue) 182 { 183 RT_ZERO(*pValue); 175 RTDECL(int) RTSystemQueryFirmwareBoolean(RTSYSFWPROP enmProp, bool *pfValue) 176 { 177 *pfValue = false; 184 178 185 179 /* 186 * Translate the enmProp to a name and type:180 * Translate the enmProp to a name: 187 181 */ 188 182 const wchar_t *pwszName = NULL; … … 191 185 case RTSYSFWPROP_SECURE_BOOT: 192 186 pwszName = L"SecureBoot"; 193 pValue->enmType = RTSYSFWVALUETYPE_BOOLEAN;194 187 break; 195 188 … … 200 193 201 194 /* 202 * Do t ype specificquery.195 * Do the query. 203 196 */ 204 197 if (!g_pfnGetFirmwareEnvironmentVariableW) … … 206 199 rtSystemFirmwareGetPrivileges(SE_SYSTEM_ENVIRONMENT_NAME); 207 200 208 int rc; 209 switch (pValue->enmType) 210 { 211 case RTSYSFWVALUETYPE_BOOLEAN: 212 { 213 uint8_t bValue = 0; 214 DWORD cbRet = g_pfnGetFirmwareEnvironmentVariableW(pwszName, VBOX_UEFI_UUID_GLOBALS, &bValue, sizeof(bValue)); 215 pValue->u.fVal = cbRet != 0 && bValue != 0; 216 rc = cbRet != 0 || GetLastError() == ERROR_INVALID_FUNCTION ? VINF_SUCCESS : RTErrConvertFromWin32(GetLastError()); 217 break; 218 } 219 220 default: 221 AssertFailedReturn(VERR_INTERNAL_ERROR); 222 } 223 224 return rc; 225 } 226 201 uint8_t bValue = 0; 202 DWORD cbRet = g_pfnGetFirmwareEnvironmentVariableW(pwszName, VBOX_UEFI_UUID_GLOBALS, &bValue, sizeof(bValue)); 203 *pfValue = cbRet != 0 && bValue != 0; 204 return cbRet != 0 || GetLastError() == ERROR_INVALID_FUNCTION ? VINF_SUCCESS : RTErrConvertFromWin32(GetLastError()); 205 } 206 -
trunk/src/VBox/Runtime/testcase/tstRTSystemQueryFirmware.cpp
r81064 r81137 46 46 47 47 /* 48 * RTSystem FirmwareQueryType48 * RTSystemQueryFirmwareType 49 49 */ 50 RTTestSub(hTest, "RTSystem FirmwareQueryType");50 RTTestSub(hTest, "RTSystemQueryFirmwareType"); 51 51 RTSYSFWTYPE enmType = (RTSYSFWTYPE)-42; 52 int rc = RTSystem FirmwareQueryType(&enmType);52 int rc = RTSystemQueryFirmwareType(&enmType); 53 53 if (RT_SUCCESS(rc)) 54 54 { … … 56 56 { 57 57 case RTSYSFWTYPE_BIOS: 58 RTTestPrintf(hTest, RTTESTLVL_INFO, " Firmware type: BIOS (Legacy)\n");59 break;60 58 case RTSYSFWTYPE_UEFI: 61 RTTestPrintf(hTest, RTTESTLVL_INFO, " Firmware type: UEFI\n");62 break;63 59 case RTSYSFWTYPE_UNKNOWN: /* Do not fail on not-implemented platforms. */ 64 RTTestPrintf(hTest, RTTESTLVL_INFO, " Firmware type: Unknown\n");60 RTTestPrintf(hTest, RTTESTLVL_INFO, " Firmware type: %s\n", RTSystemFirmwareTypeName(enmType)); 65 61 break; 66 62 default: 67 RTTestFailed(hTest, "RTSystem FirmwareQueryType return invalid type: %d (%#x)", enmType, enmType);63 RTTestFailed(hTest, "RTSystemQueryFirmwareType return invalid type: %d (%#x)", enmType, enmType); 68 64 break; 69 65 } 70 66 } 71 67 else if (rc != VERR_NOT_SUPPORTED) 72 RTTestFailed(hTest, "RTSystem FirmwareQueryType failed: %Rrc", rc);68 RTTestFailed(hTest, "RTSystemQueryFirmwareType failed: %Rrc", rc); 73 69 74 70 /* 75 * RTSystem FirmwareQueryValue71 * RTSystemQueryFirmwareBoolean 76 72 */ 77 RTTestSub(hTest, "RTSystem FirmwareQueryValue");78 RTSYSFWVALUEValue;79 rc = RTSystem FirmwareQueryValue(RTSYSFWPROP_SECURE_BOOT, &Value);73 RTTestSub(hTest, "RTSystemQueryFirmwareBoolean"); 74 bool fValue; 75 rc = RTSystemQueryFirmwareBoolean(RTSYSFWPROP_SECURE_BOOT, &fValue); 80 76 if (RT_SUCCESS(rc)) 81 { 82 RTTEST_CHECK(hTest, Value.enmType == RTSYSFWVALUETYPE_BOOLEAN); 83 RTTestPrintf(hTest, RTTESTLVL_INFO, " Secure Boot: %s\n", Value.u.fVal ? "enabled" : "disabled"); 84 RTSystemFirmwareFreeValue(&Value); 85 RTSystemFirmwareFreeValue(&Value); 86 } 77 RTTestPrintf(hTest, RTTESTLVL_INFO, " Secure Boot: %s\n", fValue ? "enabled" : "disabled"); 87 78 else if (rc != VERR_NOT_SUPPORTED && rc != VERR_SYS_UNSUPPORTED_FIRMWARE_PROPERTY) 88 RTTestIFailed("RTSystem FirmwareQueryValue/RTSYSFWPROP_SECURE_BOOT failed: %Rrc", rc);79 RTTestIFailed("RTSystemQueryFirmwareBoolean/RTSYSFWPROP_SECURE_BOOT failed: %Rrc", rc); 89 80 90 81 return RTTestSummaryAndDestroy(hTest);
Note:
See TracChangeset
for help on using the changeset viewer.