Changeset 20854 in vbox
- Timestamp:
- Jun 23, 2009 4:32:12 PM (15 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 4 edited
-
VM.cpp (modified) (4 diffs)
-
VMM.cpp (modified) (2 diffs)
-
VMMInternal.h (modified) (2 diffs)
-
VMMR0/VMMR0.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VM.cpp
r20564 r20854 131 131 static int vmR3InitGC(PVM pVM); 132 132 static int vmR3InitDoCompleted(PVM pVM, VMINITCOMPLETED enmWhat); 133 static DECLCALLBACK(size_t) vmR3LogPrefixCallback(PRTLOGGER pLogger, char *pchBuf, size_t cchBuf, void *pvUser); 133 134 static DECLCALLBACK(int) vmR3PowerOn(PVM pVM); 134 135 static DECLCALLBACK(int) vmR3Suspend(PVM pVM); … … 645 646 { 646 647 /* 647 * Set the state and link into the global list.648 */648 * Set the state and link into the global list. 649 */ 649 650 vmR3SetState(pVM, VMSTATE_CREATED); 650 651 pUVM->pNext = g_pUVMsHead; 651 652 g_pUVMsHead = pUVM; 653 654 #ifdef LOG_ENABLED 655 RTLogSetCustomPrefixCallback(NULL, vmR3LogPrefixCallback, pUVM); 656 #endif 652 657 return VINF_SUCCESS; 653 658 } … … 1039 1044 1040 1045 /** 1046 * Logger callback for inserting a custom prefix. 1047 * 1048 * @returns Number of chars written. 1049 * @param pLogger The logger. 1050 * @param pchBuf The output buffer. 1051 * @param cchBuf The output buffer size. 1052 * @param pvUser Pointer to the UVM structure. 1053 */ 1054 static DECLCALLBACK(size_t) vmR3LogPrefixCallback(PRTLOGGER pLogger, char *pchBuf, size_t cchBuf, void *pvUser) 1055 { 1056 AssertReturn(cchBuf >= 2, 0); 1057 PUVM pUVM = (PUVM)pvUser; 1058 PUVMCPU pUVCpu = (PUVMCPU)RTTlsGet(pUVM->vm.s.idxTLS); 1059 if (pUVCpu) 1060 { 1061 static const char s_szHex[17] = "0123456789abcdef"; 1062 VMCPUID const idCpu = pUVCpu->idCpu; 1063 pchBuf[1] = s_szHex[ idCpu & 15]; 1064 pchBuf[0] = s_szHex[(idCpu >> 4) & 15]; 1065 } 1066 else 1067 { 1068 pchBuf[0] = 'x'; 1069 pchBuf[1] = 'y'; 1070 } 1071 1072 return 2; 1073 } 1074 1075 1076 /** 1041 1077 * Calls the relocation functions for all VMM components so they can update 1042 1078 * any GC pointers. When this function is called all the basic VM members … … 2032 2068 STAMR3TermUVM(pUVM); 2033 2069 2070 #ifdef LOG_ENABLED 2071 RTLogSetCustomPrefixCallback(NULL, NULL, NULL); 2072 #endif 2034 2073 RTTlsFree(pUVM->vm.s.idxTLS); 2035 2074 -
trunk/src/VBox/VMM/VMM.cpp
r20792 r20854 808 808 * in ring-0. Only initialize it once. 809 809 */ 810 for ( unsignedi = 0; i < pVM->cCPUs; i++)810 for (VMCPUID i = 0; i < pVM->cCPUs; i++) 811 811 { 812 812 PVMCPU pVCpu = &pVM->aCpus[i]; … … 818 818 RTR0PTR pfnLoggerWrapper = NIL_RTR0PTR; 819 819 rc = PDMR3LdrGetSymbolR0(pVM, VMMR0_MAIN_MODULE_NAME, "vmmR0LoggerWrapper", &pfnLoggerWrapper); 820 AssertReleaseMsgRCReturn(rc, (" VMMLoggerWrapper not found! rc=%Rra\n", rc), rc);820 AssertReleaseMsgRCReturn(rc, ("vmmR0LoggerWrapper not found! rc=%Rra\n", rc), rc); 821 821 822 822 RTR0PTR pfnLoggerFlush = NIL_RTR0PTR; 823 823 rc = PDMR3LdrGetSymbolR0(pVM, VMMR0_MAIN_MODULE_NAME, "vmmR0LoggerFlush", &pfnLoggerFlush); 824 AssertReleaseMsgRCReturn(rc, (" VMMLoggerFlush not found! rc=%Rra\n", rc), rc);824 AssertReleaseMsgRCReturn(rc, ("vmmR0LoggerFlush not found! rc=%Rra\n", rc), rc); 825 825 826 826 rc = RTLogCreateForR0(&pR0LoggerR3->Logger, pR0LoggerR3->cbLogger, 827 *(PFNRTLOGGER *)&pfnLoggerWrapper, *(PFNRTLOGFLUSH *)&pfnLoggerFlush,828 RTLOGFLAGS_BUFFERED, RTLOGDEST_DUMMY);827 *(PFNRTLOGGER *)&pfnLoggerWrapper, *(PFNRTLOGFLUSH *)&pfnLoggerFlush, 828 RTLOGFLAGS_BUFFERED, RTLOGDEST_DUMMY); 829 829 AssertReleaseMsgRCReturn(rc, ("RTLogCreateForR0 failed! rc=%Rra\n", rc), rc); 830 831 RTR0PTR pfnLoggerPrefix = NIL_RTR0PTR; 832 rc = PDMR3LdrGetSymbolR0(pVM, VMMR0_MAIN_MODULE_NAME, "vmmR0LoggerPrefix", &pfnLoggerPrefix); 833 AssertReleaseMsgRCReturn(rc, ("vmmR0LoggerPrefix not found! rc=%Rra\n", rc), rc); 834 rc = RTLogSetCustomPrefixCallback(&pR0LoggerR3->Logger, *(PFNRTLOGPREFIX *)&pfnLoggerPrefix, NULL); 835 AssertReleaseMsgRCReturn(rc, ("RTLogSetCustomPrefixCallback failed! rc=%Rra\n", rc), rc); 836 837 pR0LoggerR3->idCpu = i; 830 838 pR0LoggerR3->fCreated = true; 831 839 pR0LoggerR3->fFlushingDisabled = false; 840 832 841 } 833 842 -
trunk/src/VBox/VMM/VMMInternal.h
r20663 r20854 112 112 bool fRegistered; 113 113 bool a8Alignment; 114 #if HC_ARCH_BITS == 32 114 /** The CPU ID. */ 115 VMCPUID idCpu; 116 #if HC_ARCH_BITS == 64 115 117 uint32_t u32Alignment; 116 118 #endif … … 558 560 VMMR0DECL(void) vmmR0LoggerFlush(PRTLOGGER pLogger); 559 561 562 /** 563 * Interal R0 logger worker: Custom prefix. 564 * 565 * @returns Number of chars written. 566 * 567 * @param pLogger The logger instance. 568 * @param pchBuf The output buffer. 569 * @param cchBuf The size of the buffer. 570 * @param pvUser User argument (ignored). 571 */ 572 VMMR0DECL(size_t) vmmR0LoggerPrefix(PRTLOGGER pLogger, char *pchBuf, size_t cchBuf, void *pvUser); 573 560 574 #endif /* IN_RING0 */ 561 575 #ifdef IN_RC -
trunk/src/VBox/VMM/VMMR0/VMMR0.cpp
r20406 r20854 1212 1212 } 1213 1213 1214 /** 1215 * Interal R0 logger worker: Custom prefix. 1216 * 1217 * @returns Number of chars written. 1218 * 1219 * @param pLogger The logger instance. 1220 * @param pchBuf The output buffer. 1221 * @param cchBuf The size of the buffer. 1222 * @param pvUser User argument (ignored). 1223 */ 1224 VMMR0DECL(size_t) vmmR0LoggerPrefix(PRTLOGGER pLogger, char *pchBuf, size_t cchBuf, void *pvUser) 1225 { 1226 NOREF(pvUser); 1227 #ifdef LOG_ENABLED 1228 PVMMR0LOGGER pR0Logger = (PVMMR0LOGGER)((uintptr_t)pLogger - RT_OFFSETOF(VMMR0LOGGER, Logger)); 1229 if ( !VALID_PTR(pR0Logger) 1230 || !VALID_PTR(pR0Logger + 1) 1231 || pLogger->u32Magic != RTLOGGER_MAGIC 1232 || cchBuf < 2) 1233 return 0; 1234 1235 static const char s_szHex[17] = "0123456789abcdef"; 1236 VMCPUID const idCpu = pR0Logger->idCpu; 1237 pchBuf[1] = s_szHex[ idCpu & 15]; 1238 pchBuf[0] = s_szHex[(idCpu >> 4) & 15]; 1239 1240 return 2; 1241 #else 1242 return 0; 1243 #endif 1244 } 1245 1246 1214 1247 #ifdef LOG_ENABLED 1215 1248 /**
Note:
See TracChangeset
for help on using the changeset viewer.

