20 // System includes |
20 // System includes |
21 #include <e32svr.h> |
21 #include <e32svr.h> |
22 |
22 |
23 // User includes |
23 // User includes |
24 #include "MemSpyDriverOpCodes.h" |
24 #include "MemSpyDriverOpCodes.h" |
25 #include "RBuildQueryableHeap.h" |
|
26 #include <memspy/driver/memspydriverconstants.h> |
25 #include <memspy/driver/memspydriverconstants.h> |
27 #include <memspy/driver/memspydriverobjectsshared.h> |
26 #include <memspy/driver/memspydriverobjectsshared.h> |
28 #include "MemSpyDriverStreamReaderImp.h" |
27 #include "MemSpyDriverStreamReaderImp.h" |
29 #include "MemSpyDriverObjectsInternal.h" |
28 #include "MemSpyDriverObjectsInternal.h" |
|
29 #include "heaputils.h" |
30 |
30 |
31 // Constants |
31 // Constants |
32 const TInt KMemSpyClientBufferGrowSize = 0x1000 * 8; // 32kb |
32 const TInt KMemSpyClientBufferGrowSize = 0x1000 * 8; // 32kb |
33 |
33 |
34 // Forward declarations |
34 // Forward declarations |
509 if ( aInfo.Type() == TMemSpyHeapInfo::ETypeRHeap ) |
509 if ( aInfo.Type() == TMemSpyHeapInfo::ETypeRHeap ) |
510 { |
510 { |
511 TMemSpyHeapInfoRHeap& rHeapInfo = aInfo.AsRHeap(); |
511 TMemSpyHeapInfoRHeap& rHeapInfo = aInfo.AsRHeap(); |
512 TMemSpyHeapMetaDataRHeap& metaData = rHeapInfo.MetaData(); |
512 TMemSpyHeapMetaDataRHeap& metaData = rHeapInfo.MetaData(); |
513 metaData.SetVTable( RHeapVTable() ); |
513 metaData.SetVTable( RHeapVTable() ); |
514 metaData.SetClassSize( sizeof( RHeap ) ); |
514 //metaData.SetClassSize( sizeof( RHeap ) ); |
515 } |
515 } |
516 } |
516 } |
517 else if ( r == KErrNotSupported ) |
517 else if ( r == KErrNotSupported ) |
518 { |
518 { |
519 aInfo.SetType( TMemSpyHeapInfo::ETypeUnknown ); |
519 aInfo.SetType( TMemSpyHeapInfo::ETypeUnknown ); |
521 } |
521 } |
522 // |
522 // |
523 return r; |
523 return r; |
524 } |
524 } |
525 |
525 |
526 |
|
527 EXPORT_C TInt RMemSpyDriverClient::GetHeapInfoUser( TMemSpyHeapInfo& aInfo, TUint aTid, RArray< TMemSpyDriverFreeCell >& aFreeCells ) |
526 EXPORT_C TInt RMemSpyDriverClient::GetHeapInfoUser( TMemSpyHeapInfo& aInfo, TUint aTid, RArray< TMemSpyDriverFreeCell >& aFreeCells ) |
528 { |
527 { |
|
528 return GetHeapInfoUser(aInfo, aTid, aFreeCells, EFalse); |
|
529 } |
|
530 |
|
531 // For the record I don't think this function should be exported, but since the one above was I'm going with the flow. -TomS |
|
532 EXPORT_C TInt RMemSpyDriverClient::GetHeapInfoUser(TMemSpyHeapInfo& aInfo, TUint aTid, RArray<TMemSpyDriverCell>& aCells, TBool aCollectAllocatedCellsAsWellAsFree) |
|
533 { |
529 TMemSpyDriverInternalHeapRequestParameters params; |
534 TMemSpyDriverInternalHeapRequestParameters params; |
530 // |
535 // |
531 params.iTid = aTid; |
536 params.iTid = aTid; |
532 params.iRHeapVTable = RHeapVTable(); |
537 params.iRHeapVTable = RHeapVTable(); |
533 params.iDebugAllocator = DebugEUser(); |
538 params.iDebugAllocator = DebugEUser(); |
534 params.iMasterInfo = &aInfo; |
539 params.iMasterInfo = &aInfo; |
535 params.iBuildFreeCellList = ETrue; |
540 params.iBuildFreeCellList = ETrue; |
536 // |
541 params.iBuildAllocCellList = aCollectAllocatedCellsAsWellAsFree; |
537 aFreeCells.Reset(); |
542 |
|
543 // |
|
544 aCells.Reset(); |
538 ResetStreamBuffer(); |
545 ResetStreamBuffer(); |
539 TInt r = DoControl( EMemSpyDriverOpCodeHeapInfoGetUser, ¶ms ); |
546 TInt r = DoControl( EMemSpyDriverOpCodeHeapInfoGetUser, ¶ms ); |
540 // |
547 // |
541 if ( r >= KErrNone ) |
548 if ( r >= KErrNone ) |
542 { |
549 { |
546 if ( aInfo.Type() == TMemSpyHeapInfo::ETypeRHeap ) |
553 if ( aInfo.Type() == TMemSpyHeapInfo::ETypeRHeap ) |
547 { |
554 { |
548 TMemSpyHeapInfoRHeap& rHeapInfo = aInfo.AsRHeap(); |
555 TMemSpyHeapInfoRHeap& rHeapInfo = aInfo.AsRHeap(); |
549 TMemSpyHeapMetaDataRHeap& metaData = rHeapInfo.MetaData(); |
556 TMemSpyHeapMetaDataRHeap& metaData = rHeapInfo.MetaData(); |
550 metaData.SetVTable( RHeapVTable() ); |
557 metaData.SetVTable( RHeapVTable() ); |
551 metaData.SetClassSize( sizeof( RHeap ) ); |
558 //metaData.SetClassSize( sizeof( RHeap ) ); |
552 } |
559 } |
553 |
560 |
554 // Resize transfer buffer to make room for free cells. We only make the buffer |
561 // Resize transfer buffer to make room for free cells. We only make the buffer |
555 // bigger, not smaller. |
562 // bigger, not smaller. |
556 if ( iBuffer.Size() < r ) |
563 if ( iBuffer.Size() < r ) |
559 } |
566 } |
560 |
567 |
561 // Now fetch the heap data |
568 // Now fetch the heap data |
562 if ( r == KErrNone ) |
569 if ( r == KErrNone ) |
563 { |
570 { |
564 r = DoControl( EMemSpyDriverOpCodeHeapInfoFetchFreeCells, &iBuffer ); |
571 r = DoControl( EMemSpyDriverOpCodeHeapInfoFetchCellList, &iBuffer ); |
565 if ( r == KErrNone ) |
572 if ( r == KErrNone ) |
566 { |
573 { |
567 TRAP( r, ReadHeapInfoFreeCellsFromXferBufferL( aFreeCells ) ); |
574 TRAP( r, ReadHeapInfoFreeCellsFromXferBufferL( aCells ) ); |
568 } |
575 } |
569 } |
576 } |
570 } |
577 } |
571 else if ( r == KErrNotSupported ) |
578 else if ( r == KErrNotSupported ) |
572 { |
579 { |
661 params.iRHeapVTable = RHeapVTable(); |
668 params.iRHeapVTable = RHeapVTable(); |
662 params.iDebugAllocator = DebugEUser(); |
669 params.iDebugAllocator = DebugEUser(); |
663 params.iDes = &aDest; |
670 params.iDes = &aDest; |
664 params.iChecksum = aFreeCellChecksum; |
671 params.iChecksum = aFreeCellChecksum; |
665 params.iRemaining = -1; |
672 params.iRemaining = -1; |
|
673 params.iReadAddress = 0; |
666 aDest.Zero(); |
674 aDest.Zero(); |
667 // |
675 // |
668 TInt r = DoControl( EMemSpyDriverOpCodeHeapDataGetUser, ¶ms, NULL ); |
676 TInt r = DoControl( EMemSpyDriverOpCodeHeapDataGetUser, ¶ms, NULL ); |
669 // |
677 // |
670 if ( r >= KErrNone ) |
678 if ( r >= KErrNone ) |
686 params.iRHeapVTable = RHeapVTable(); |
694 params.iRHeapVTable = RHeapVTable(); |
687 params.iDebugAllocator = DebugEUser(); |
695 params.iDebugAllocator = DebugEUser(); |
688 params.iDes = &aDest; |
696 params.iDes = &aDest; |
689 params.iChecksum = 0; |
697 params.iChecksum = 0; |
690 params.iRemaining = aAmountRemaining; |
698 params.iRemaining = aAmountRemaining; |
|
699 params.iReadAddress = aReadAddress; |
691 aDest.Zero(); |
700 aDest.Zero(); |
692 // |
701 // |
693 TInt r = DoControl( EMemSpyDriverOpCodeHeapDataGetUser, ¶ms, NULL ); |
702 TInt r = DoControl( EMemSpyDriverOpCodeHeapDataGetUser, ¶ms, NULL ); |
694 // |
703 // |
695 if ( r >= KErrNone ) |
704 if ( r >= KErrNone ) |
788 } |
797 } |
789 |
798 |
790 |
799 |
791 EXPORT_C TInt RMemSpyDriverClient::WalkHeapNextCell( TUint aTid, TMemSpyDriverCellType& aCellType, TAny*& aCellAddress, TInt& aLength, TInt& aNestingLevel, TInt& aAllocNumber, TInt& aCellHeaderSize, TAny*& aCellPayloadAddress ) |
800 EXPORT_C TInt RMemSpyDriverClient::WalkHeapNextCell( TUint aTid, TMemSpyDriverCellType& aCellType, TAny*& aCellAddress, TInt& aLength, TInt& aNestingLevel, TInt& aAllocNumber, TInt& aCellHeaderSize, TAny*& aCellPayloadAddress ) |
792 { |
801 { |
793 aCellType = EMemSpyDriverGoodAllocatedCell; |
802 aCellType = EMemSpyDriverBadCellMask; |
794 aCellAddress = NULL; |
803 aCellAddress = NULL; |
795 aLength = 0; |
804 aLength = 0; |
796 aNestingLevel = 0; |
805 aNestingLevel = 0; |
797 aAllocNumber = 0; |
806 aAllocNumber = 0; |
798 aCellHeaderSize = 0; |
807 aCellHeaderSize = 0; |
801 TMemSpyDriverInternalWalkHeapParamsCell params; |
810 TMemSpyDriverInternalWalkHeapParamsCell params; |
802 const TInt r = DoControl( EMemSpyDriverOpCodeWalkHeapNextCell, (TAny*) aTid, ¶ms ); |
811 const TInt r = DoControl( EMemSpyDriverOpCodeWalkHeapNextCell, (TAny*) aTid, ¶ms ); |
803 // |
812 // |
804 if ( r == KErrNone ) |
813 if ( r == KErrNone ) |
805 { |
814 { |
806 RBuildQueryableHeap* heap = static_cast< RBuildQueryableHeap* >( &User::Allocator() ); |
|
807 // |
|
808 aCellType = (TMemSpyDriverCellType) params.iCellType; |
815 aCellType = (TMemSpyDriverCellType) params.iCellType; |
809 aCellAddress = params.iCellAddress; |
816 aCellAddress = params.iCellAddress; |
810 aLength = params.iLength; |
817 aLength = params.iLength; |
811 aNestingLevel = params.iNestingLevel; |
818 aNestingLevel = params.iNestingLevel; |
812 aAllocNumber = params.iAllocNumber; |
819 aAllocNumber = params.iAllocNumber; |
813 aCellHeaderSize = heap->CellHeaderSize( aCellType ); |
|
814 aCellPayloadAddress = ((TUint8*) aCellAddress) + aCellHeaderSize; |
820 aCellPayloadAddress = ((TUint8*) aCellAddress) + aCellHeaderSize; |
815 } |
821 } |
816 // |
822 // |
817 return r; |
823 return r; |
818 } |
824 } |
837 } |
843 } |
838 |
844 |
839 |
845 |
840 EXPORT_C TInt RMemSpyDriverClient::WalkHeapGetCellInfo( TAny*& aCellAddress, TMemSpyDriverCellType& aCellType, TInt& aLength, TInt& aNestingLevel, TInt& aAllocNumber, TInt& aCellHeaderSize, TAny*& aCellPayloadAddress ) |
846 EXPORT_C TInt RMemSpyDriverClient::WalkHeapGetCellInfo( TAny*& aCellAddress, TMemSpyDriverCellType& aCellType, TInt& aLength, TInt& aNestingLevel, TInt& aAllocNumber, TInt& aCellHeaderSize, TAny*& aCellPayloadAddress ) |
841 { |
847 { |
842 aCellType = EMemSpyDriverGoodAllocatedCell; |
848 aCellType = EMemSpyDriverBadCellMask; |
843 aLength = 0; |
849 aLength = 0; |
844 aNestingLevel = 0; |
850 aNestingLevel = 0; |
845 aAllocNumber = 0; |
851 aAllocNumber = 0; |
846 aCellHeaderSize = 0; |
852 aCellHeaderSize = 0; |
847 aCellPayloadAddress = NULL; |
853 aCellPayloadAddress = NULL; |
849 TMemSpyDriverInternalWalkHeapParamsCell params; |
855 TMemSpyDriverInternalWalkHeapParamsCell params; |
850 const TInt r = DoControl( EMemSpyDriverOpCodeWalkHeapGetCellInfo, aCellAddress, ¶ms ); |
856 const TInt r = DoControl( EMemSpyDriverOpCodeWalkHeapGetCellInfo, aCellAddress, ¶ms ); |
851 // |
857 // |
852 if ( r == KErrNone ) |
858 if ( r == KErrNone ) |
853 { |
859 { |
854 RBuildQueryableHeap* heap = static_cast< RBuildQueryableHeap* >( &User::Allocator() ); |
|
855 // |
|
856 aCellAddress = params.iCellAddress; |
860 aCellAddress = params.iCellAddress; |
857 aCellType = (TMemSpyDriverCellType) params.iCellType; |
861 aCellType = (TMemSpyDriverCellType) params.iCellType; |
858 aLength = params.iLength; |
862 aLength = params.iLength; |
859 aNestingLevel = params.iNestingLevel; |
863 aNestingLevel = params.iNestingLevel; |
860 aAllocNumber = params.iAllocNumber; |
864 aAllocNumber = params.iAllocNumber; |
861 aCellHeaderSize = heap->CellHeaderSize( aCellType ); |
|
862 aCellPayloadAddress = ((TUint8*) aCellAddress) + aCellHeaderSize; |
865 aCellPayloadAddress = ((TUint8*) aCellAddress) + aCellHeaderSize; |
863 } |
866 } |
864 // |
867 // |
865 return r; |
868 return r; |
866 } |
869 } |
1399 } |
1402 } |
1400 |
1403 |
1401 |
1404 |
1402 TBool RMemSpyDriverClient::DebugEUser() |
1405 TBool RMemSpyDriverClient::DebugEUser() |
1403 { |
1406 { |
1404 RHeap* heap = static_cast< RHeap* >( &User::Allocator() ); |
1407 LtkUtils::RAllocatorHelper allocHelper; |
1405 RBuildQueryableHeap* queryHeap = static_cast< RBuildQueryableHeap* >( heap ); |
1408 TBool result = EFalse; |
1406 const TBool isDebugEUser = queryHeap->IsDebugEUser(); |
1409 TInt err = allocHelper.Open(&User::Allocator()); |
1407 return isDebugEUser; |
1410 if (!err) |
|
1411 { |
|
1412 result = allocHelper.AllocatorIsUdeb(); |
|
1413 allocHelper.Close(); |
|
1414 } |
|
1415 return result; |
1408 } |
1416 } |
1409 |
1417 |
1410 |
1418 |
1411 void RMemSpyDriverClient::ResetStreamBuffer() |
1419 void RMemSpyDriverClient::ResetStreamBuffer() |
1412 { |
1420 { |
1433 #endif |
1441 #endif |
1434 |
1442 |
1435 for( TInt i=0; i<count; i++ ) |
1443 for( TInt i=0; i<count; i++ ) |
1436 { |
1444 { |
1437 TMemSpyDriverFreeCell entry; |
1445 TMemSpyDriverFreeCell entry; |
1438 entry.iType = stream.ReadInt32L(); |
1446 entry.iType = (TMemSpyDriverCellType)stream.ReadInt32L(); |
1439 entry.iAddress = reinterpret_cast< TAny* >( stream.ReadUint32L() ); |
1447 entry.iAddress = reinterpret_cast< TAny* >( stream.ReadUint32L() ); |
1440 entry.iLength = stream.ReadInt32L(); |
1448 entry.iLength = stream.ReadInt32L(); |
1441 aFreeCells.AppendL( entry ); |
1449 aFreeCells.AppendL( entry ); |
1442 } |
1450 } |
1443 |
1451 |
1460 |
1468 |
1461 static void PrintHeapInfo( const TMemSpyHeapInfo& aInfo ) |
1469 static void PrintHeapInfo( const TMemSpyHeapInfo& aInfo ) |
1462 { |
1470 { |
1463 #if defined( _DEBUG ) && !defined( __WINS__ ) |
1471 #if defined( _DEBUG ) && !defined( __WINS__ ) |
1464 const TMemSpyHeapInfoRHeap& rHeapInfo = aInfo.AsRHeap(); |
1472 const TMemSpyHeapInfoRHeap& rHeapInfo = aInfo.AsRHeap(); |
1465 const TMemSpyHeapObjectDataRHeap& rHeapObjectData = rHeapInfo.ObjectData(); |
1473 //const TMemSpyHeapObjectDataRHeap& rHeapObjectData = rHeapInfo.ObjectData(); |
1466 const TMemSpyHeapStatisticsRHeap& rHeapStats = rHeapInfo.Statistics(); |
1474 const TMemSpyHeapStatisticsRHeap& rHeapStats = rHeapInfo.Statistics(); |
1467 const TMemSpyHeapMetaDataRHeap& rHeapMetaData = rHeapInfo.MetaData(); |
1475 const TMemSpyHeapMetaDataRHeap& rHeapMetaData = rHeapInfo.MetaData(); |
1468 |
1476 |
|
1477 /* |
1469 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() ---------------------------------------------------"); |
1478 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() ---------------------------------------------------"); |
1470 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - RAllocator -"); |
1479 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - RAllocator -"); |
1471 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() ---------------------------------------------------"); |
1480 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() ---------------------------------------------------"); |
1472 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - RAllocator::iAccessCount: %d", rHeapObjectData.iAccessCount); |
1481 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - RAllocator::iAccessCount: %d", rHeapObjectData.iAccessCount); |
1473 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - RAllocator::iHandleCount: %d", rHeapObjectData.iHandleCount); |
1482 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - RAllocator::iHandleCount: %d", rHeapObjectData.iHandleCount); |
1499 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - RHeap::iFailed: %d", rHeapObjectData.iFailed); |
1508 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - RHeap::iFailed: %d", rHeapObjectData.iFailed); |
1500 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - RHeap::iFailAllocCount: %d", rHeapObjectData.iFailAllocCount); |
1509 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - RHeap::iFailAllocCount: %d", rHeapObjectData.iFailAllocCount); |
1501 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - RHeap::iRand: %d", rHeapObjectData.iRand); |
1510 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - RHeap::iRand: %d", rHeapObjectData.iRand); |
1502 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - RHeap::iTestData: 0x%08x", rHeapObjectData.iTestData); |
1511 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - RHeap::iTestData: 0x%08x", rHeapObjectData.iTestData); |
1503 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - "); |
1512 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - "); |
|
1513 */ |
1504 |
1514 |
1505 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() ---------------------------------------------------"); |
1515 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() ---------------------------------------------------"); |
1506 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - Stats (Free) -"); |
1516 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - Stats (Free) -"); |
1507 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() ---------------------------------------------------"); |
1517 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() ---------------------------------------------------"); |
1508 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - cell count: %d", rHeapStats.StatsFree().TypeCount()); |
1518 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - cell count: %d", rHeapStats.StatsFree().TypeCount()); |
1519 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() ---------------------------------------------------"); |
1529 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() ---------------------------------------------------"); |
1520 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - cell count: %d", rHeapStats.StatsAllocated().TypeCount()); |
1530 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - cell count: %d", rHeapStats.StatsAllocated().TypeCount()); |
1521 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - cell size: %d", rHeapStats.StatsAllocated().TypeSize()); |
1531 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - cell size: %d", rHeapStats.StatsAllocated().TypeSize()); |
1522 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - cell largest: 0x%08x", rHeapStats.StatsAllocated().LargestCellAddress()); |
1532 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - cell largest: 0x%08x", rHeapStats.StatsAllocated().LargestCellAddress()); |
1523 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - cell largest size: %d", rHeapStats.StatsAllocated().LargestCellSize()); |
1533 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - cell largest size: %d", rHeapStats.StatsAllocated().LargestCellSize()); |
1524 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - "); |
|
1525 |
|
1526 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() ---------------------------------------------------"); |
|
1527 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - Stats (Common) -"); |
|
1528 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() ---------------------------------------------------"); |
|
1529 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - total cell count: %d", rHeapStats.StatsCommon().TotalCellCount()); |
|
1530 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - "); |
1534 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - "); |
1531 |
1535 |
1532 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() ---------------------------------------------------"); |
1536 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() ---------------------------------------------------"); |
1533 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - Misc. Info -"); |
1537 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - Misc. Info -"); |
1534 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() ---------------------------------------------------"); |
1538 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() ---------------------------------------------------"); |
1540 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - debug allocator: %d", rHeapMetaData.IsDebugAllocator()); |
1544 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - debug allocator: %d", rHeapMetaData.IsDebugAllocator()); |
1541 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - shared heap: %d", rHeapMetaData.IsSharedHeap() ); |
1545 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - shared heap: %d", rHeapMetaData.IsSharedHeap() ); |
1542 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - user thread: %d", rHeapMetaData.IsUserThread() ); |
1546 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - user thread: %d", rHeapMetaData.IsUserThread() ); |
1543 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - thread id: %d", aInfo.Tid() ); |
1547 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - thread id: %d", aInfo.Tid() ); |
1544 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - process id: %d", aInfo.Pid() ); |
1548 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - process id: %d", aInfo.Pid() ); |
1545 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - cell header size (free): %d", rHeapMetaData.HeaderSizeFree()); |
1549 //RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - cell header size (free): %d", rHeapMetaData.HeaderSizeFree()); |
1546 RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - cell header size (alloc): %d", rHeapMetaData.HeaderSizeAllocated()); |
1550 //RDebug::Printf("RMemSpyDriverClient::PrintHeapInfo() - cell header size (alloc): %d", rHeapMetaData.HeaderSizeAllocated()); |
1547 #else |
1551 #else |
1548 (void) aInfo; |
1552 (void) aInfo; |
1549 #endif |
1553 #endif |
1550 } |
1554 } |
1551 |
1555 |