- Timestamp:
- May 15, 2009 12:29:52 PM (16 years ago)
- svn:sync-xref-src-repo-rev:
- 47350
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMM.cpp
r19702 r19732 463 463 Assert(pVCpu && pVCpu->idCpu == 0); 464 464 465 #ifdef LOG_ENABLED 465 466 /* 466 467 * Initialize the ring-0 logger if we haven't done so yet. … … 473 474 return rc; 474 475 } 476 #endif 475 477 476 478 /* … … 485 487 rc = SUPCallVMMR0Ex(pVM->pVMR0, 0 /* VCPU 0 */, VMMR0_DO_VMMR0_INIT, VMMGetSvnRev(), NULL); 486 488 #endif 489 /* 490 * Flush the logs. 491 */ 492 #ifdef LOG_ENABLED 487 493 if ( pVCpu->vmm.s.pR0LoggerR3 488 494 && pVCpu->vmm.s.pR0LoggerR3->Logger.offScratch > 0) 489 495 RTLogFlushToLogger(&pVCpu->vmm.s.pR0LoggerR3->Logger, NULL); 496 #endif 490 497 if (rc != VINF_VMM_CALL_HOST) 491 498 break; … … 607 614 rc = SUPCallVMMR0Ex(pVM->pVMR0, 0 /* VCPU 0 */, VMMR0_DO_VMMR0_TERM, 0, NULL); 608 615 #endif 616 /* 617 * Flush the logs. 618 */ 619 #ifdef LOG_ENABLED 609 620 if ( pVCpu->vmm.s.pR0LoggerR3 610 621 && pVCpu->vmm.s.pR0LoggerR3->Logger.offScratch > 0) 611 622 RTLogFlushToLogger(&pVCpu->vmm.s.pR0LoggerR3->Logger, NULL); 623 #endif 612 624 if (rc != VINF_VMM_CALL_HOST) 613 625 break; … … 755 767 #endif /* VBOX_WITH_RC_RELEASE_LOGGING */ 756 768 769 #ifdef LOG_ENABLED 757 770 /* 758 771 * For the ring-0 EMT logger, we use a per-thread logger instance … … 787 800 } 788 801 } 802 #endif 789 803 return rc; 790 804 } … … 1444 1458 rc = SUPCallVMMR0Ex(pVM->pVMR0, pVCpu->idCpu, uOperation, u64Arg, pReqHdr); 1445 1459 #endif 1460 /* 1461 * Flush the logs. 1462 */ 1463 #ifdef LOG_ENABLED 1446 1464 if ( pVCpu->vmm.s.pR0LoggerR3 1447 1465 && pVCpu->vmm.s.pR0LoggerR3->Logger.offScratch > 0) 1448 1466 RTLogFlushToLogger(&pVCpu->vmm.s.pR0LoggerR3->Logger, NULL); 1467 #endif 1449 1468 if (rc != VINF_VMM_CALL_HOST) 1450 1469 break; -
trunk/src/VBox/VMM/VMMInternal.h
r19702 r19732 103 103 /** Flag indicating whether we've disabled flushing (world switch) or not. */ 104 104 bool fFlushingDisabled; 105 /** Flag indicating whether we've registered the instance already. */ 106 bool fRegistered; 107 bool a8Alignment; 105 108 #if HC_ARCH_BITS == 32 106 109 uint32_t u32Alignment; … … 341 344 RCPTRTYPE(uint8_t *) pbEMTStackBottomRC; 342 345 346 #ifdef LOG_ENABLED 343 347 /** Pointer to the R0 logger instance - R3 Ptr. 344 348 * This is NULL if logging is disabled. */ … … 347 351 * This is NULL if logging is disabled. */ 348 352 R0PTRTYPE(PVMMR0LOGGER) pR0LoggerR0; 353 #endif 349 354 350 355 /** @name CallHost -
trunk/src/VBox/VMM/VMMR0/VMMR0.cpp
r19730 r19732 188 188 return VERR_INVALID_PARAMETER; 189 189 190 #ifdef LOG_ENABLED 190 191 /* 191 192 * Register the EMT R0 logger instance for VCPU 0. … … 196 197 if (pR0Logger) 197 198 { 198 # if 0 /* testing of the logger. */199 # if 0 /* testing of the logger. */ 199 200 LogCom(("vmmR0InitVM: before %p\n", RTLogDefaultInstance())); 200 201 LogCom(("vmmR0InitVM: pfnFlush=%p actual=%p\n", pR0Logger->Logger.pfnFlush, vmmR0LoggerFlush)); … … 204 205 RTLogSetDefaultInstanceThread(&pR0Logger->Logger, (uintptr_t)pVM->pSession); 205 206 LogCom(("vmmR0InitVM: after %p reg\n", RTLogDefaultInstance())); 206 RTLogSetDefaultInstanceThread(NULL, 0);207 RTLogSetDefaultInstanceThread(NULL, pVM->pSession); 207 208 LogCom(("vmmR0InitVM: after %p dereg\n", RTLogDefaultInstance())); 208 209 … … 216 217 pR0Logger->Logger.pfnLogger("hello ring-0 logger\n"); 217 218 LogCom(("vmmR0InitVM: returned succesfully from direct logger call (2). offScratch=%d\n", pR0Logger->Logger.offScratch)); 218 RTLogSetDefaultInstanceThread(NULL, 0);219 RTLogSetDefaultInstanceThread(NULL, pVM->pSession); 219 220 LogCom(("vmmR0InitVM: after %p dereg2\n", RTLogDefaultInstance())); 220 221 … … 225 226 RTLogPrintf("hello ring-0 logger (RTLogPrintf)\n"); 226 227 LogCom(("vmmR0InitVM: RTLogPrintf returned fine offScratch=%d\n", pR0Logger->Logger.offScratch)); 227 # endif228 # endif 228 229 Log(("Switching to per-thread logging instance %p (key=%p)\n", &pR0Logger->Logger, pVM->pSession)); 229 230 RTLogSetDefaultInstanceThread(&pR0Logger->Logger, (uintptr_t)pVM->pSession); 230 } 231 pR0Logger->fRegistered = true; 232 } 233 #endif /* LOG_ENABLED */ 231 234 232 235 /* … … 261 264 } 262 265 } 263 RTLogSetDefaultInstanceThread(NULL, 0);266 RTLogSetDefaultInstanceThread(NULL, (uintptr_t)pVM->pSession); 264 267 return rc; 265 268 } … … 295 298 * Deregister the logger. 296 299 */ 297 RTLogSetDefaultInstanceThread(NULL, 0);300 RTLogSetDefaultInstanceThread(NULL, (uintptr_t)pVM->pSession); 298 301 return VINF_SUCCESS; 299 302 } … … 626 629 ASMAtomicWriteU32(&pVCpu->idHostCpu, NIL_RTCPUID); 627 630 631 #ifdef LOG_ENABLED 632 if (pVCpu->idCpu > 0) 633 { 634 /* Lazy registration of ring 0 loggers. */ 635 PVMMR0LOGGER pR0Logger = pVCpu->vmm.s.pR0LoggerR0; 636 if ( pR0Logger 637 && !pR0Logger->fRegistered) 638 { 639 RTLogSetDefaultInstanceThread(&pR0Logger->Logger, (uintptr_t)pVM->pSession); 640 pR0Logger->fRegistered = true; 641 } 642 } 643 #endif 628 644 if (!HWACCMR0SuspendPending()) 629 645 { … … 764 780 if (!pVM) 765 781 return VERR_INVALID_PARAMETER; 766 767 #ifdef LOG_ENABLED768 /* Register the ring 0 logger for this thread here as well. */769 PVMCPU pVCpu = &pVM->aCpus[idCpu];770 PVMMR0LOGGER pR0Logger = pVCpu->vmm.s.pR0LoggerR0;771 if (pR0Logger)772 RTLogSetDefaultInstanceThread(&pR0Logger->Logger, (uintptr_t)pVM->pSession);773 #endif774 782 return GVMMR0RegisterVCpu(pVM, idCpu); 775 783 } … … 1140 1148 } 1141 1149 1142 1150 #ifdef LOG_ENABLED 1143 1151 /** 1144 1152 * Internal R0 logger worker: Flush logger. … … 1196 1204 VMMR0CallHost(pVM, VMMCALLHOST_VMM_LOGGER_FLUSH, 0); 1197 1205 } 1198 1199 1206 #endif 1207 1208 #ifdef LOG_ENABLED 1200 1209 /** 1201 1210 * Disables flushing of the ring-0 debug log. … … 1222 1231 pVCpu->vmm.s.pR0LoggerR0->fFlushingDisabled = false; 1223 1232 } 1224 1233 #endif 1225 1234 1226 1235 /**
Note:
See TracChangeset
for help on using the changeset viewer.