Changeset 108029 in vbox for trunk/src/VBox/Runtime/common/acpi/acpi.cpp
- Timestamp:
- Feb 3, 2025 3:58:01 PM (3 weeks ago)
- svn:sync-xref-src-repo-rev:
- 167302
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/common/acpi/acpi.cpp
r108015 r108029 397 397 398 398 /** 399 * Appends the given double word to the ACPI table, updating the package length of the current package. 400 * 401 * @param pThis The ACPI table instance. 402 * @param u32 The data to append. 403 */ 404 DECLINLINE(void) rtAcpiTblAppendDword(PRTACPITBLINT pThis, uint32_t u32) 405 { 406 uint8_t *pb = rtAcpiTblBufEnsureSpace(pThis, sizeof(u32)); 407 if (pb) 408 { 409 pb[0] = (uint8_t)u32; 410 pb[1] = (uint8_t)(u32 >> 8); 411 pb[2] = (uint8_t)(u32 >> 16); 412 pb[3] = (uint8_t)(u32 >> 24); 413 rtAcpiTblUpdatePkgLength(pThis, sizeof(u32)); 414 } 415 } 416 417 418 /** 399 419 * Appends the given date to the ACPI table, updating the package length of the current package. 400 420 * … … 696 716 RTDECL(int) RTAcpiTblDeviceStartV(RTACPITBL hAcpiTbl, const char *pszNameFmt, va_list va) 697 717 { 698 char szName[ 5];718 char szName[128]; 699 719 ssize_t cch = RTStrPrintf2V(&szName[0], sizeof(szName), pszNameFmt, va); 700 720 if (cch <= 0) … … 711 731 712 732 return rtAcpiTblPkgFinish(pThis, ACPI_AML_BYTE_CODE_EXT_OP_DEVICE); 733 } 734 735 736 RTDECL(int) RTAcpiTblProcessorStart(RTACPITBL hAcpiTbl, const char *pszName, uint8_t bProcId, uint32_t u32PBlkAddr, 737 uint8_t cbPBlk) 738 { 739 PRTACPITBLINT pThis = hAcpiTbl; 740 AssertPtrReturn(pThis, VERR_INVALID_HANDLE); 741 742 rtAcpiTblPkgStartExt(pThis, ACPI_AML_BYTE_CODE_EXT_OP_PROCESSOR); 743 rtAcpiTblAppendNameString(pThis, pszName); 744 rtAcpiTblAppendByte(pThis, bProcId); 745 rtAcpiTblAppendDword(pThis, u32PBlkAddr); 746 rtAcpiTblAppendByte(pThis, cbPBlk); 747 return pThis->rcErr; 748 } 749 750 751 RTDECL(int) RTAcpiTblProcessorStartF(RTACPITBL hAcpiTbl, uint8_t bProcId, uint32_t u32PBlkAddr, uint8_t cbPBlk, 752 const char *pszNameFmt, ...) 753 { 754 va_list va; 755 va_start(va, pszNameFmt); 756 int rc = RTAcpiTblProcessorStartV(hAcpiTbl, bProcId, u32PBlkAddr, cbPBlk, pszNameFmt, va); 757 va_end(va); 758 return rc; 759 } 760 761 762 RTDECL(int) RTAcpiTblProcessorStartV(RTACPITBL hAcpiTbl, uint8_t bProcId, uint32_t u32PBlkAddr, uint8_t cbPBlk, 763 const char *pszNameFmt, va_list va) 764 { 765 char szName[128]; 766 ssize_t cch = RTStrPrintf2V(&szName[0], sizeof(szName), pszNameFmt, va); 767 if (cch <= 0) 768 return VERR_BUFFER_OVERFLOW; 769 770 return RTAcpiTblProcessorStart(hAcpiTbl, &szName[0], bProcId, u32PBlkAddr, cbPBlk); 771 } 772 773 774 RTDECL(int) RTAcpiTblProcessorFinalize(RTACPITBL hAcpiTbl) 775 { 776 PRTACPITBLINT pThis = hAcpiTbl; 777 AssertPtrReturn(pThis, VERR_INVALID_HANDLE); 778 779 return rtAcpiTblPkgFinish(pThis, ACPI_AML_BYTE_CODE_EXT_OP_PROCESSOR); 713 780 } 714 781
Note:
See TracChangeset
for help on using the changeset viewer.