memana/analyzetoolclient/dynamicmemoryhook/src/analyzetoolfastlog.cpp
author Matti Laitinen <matti.t.laitinen@nokia.com>
Thu, 11 Feb 2010 15:51:35 +0200
changeset 0 f0f2b8682603
permissions -rw-r--r--
Add initial version of AnalyzeTool client under EPL
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     1
/*
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     3
* All rights reserved.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     8
*
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     9
* Initial Contributors:
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    11
*
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    12
* Contributors:
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    13
*
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    14
* Description:  
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    15
*
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    16
*/
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    17
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    18
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    19
#include <e32debug.h> // RDebug
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    20
#include <analyzetool/analyzetooltraceconstants.h>
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    21
#include "analyzetoolfastlog.h"
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    22
#include "atlog.h"
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    23
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    24
// Local time function.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    25
TInt64 CurrentTime()
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    26
    {
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    27
    LOGSTR1( "ATFL CurrentTime()" );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    28
    TTime time;
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    29
    time.UniversalTime();
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    30
    return time.Int64() - KMicroSecondsAt1970;
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    31
    }
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    32
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    33
TInt ATFastLogProcessStarted( const TDesC8& aProcessName,
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    34
                                 TUint aProcessId,
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    35
                                 TUint32 aIsDebug )
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    36
    {
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    37
    LOGSTR1( "ATFL ATFastLogProcessStarted()" );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    38
    // Convert process name to 16-bit descriptor.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    39
    TBuf<KMaxProcessName> processName;
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    40
    processName.Copy( aProcessName );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    41
    // Buffer to trace.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    42
    TBuf<KProcessStartBufLength> buffer;
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    43
    // Format process name and id.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    44
    buffer.Format( KProcessStart16, &processName, aProcessId );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    45
    // Timestamp.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    46
    buffer.AppendNum( CurrentTime(), EHex ) ;
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    47
    // Append udeb/urel information to the process start.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    48
    buffer.Append( KSpaceXti );  
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    49
    buffer.AppendNum( aIsDebug, EHex );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    50
    // Append version number.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    51
    buffer.Append( KSpaceXti );  
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    52
    buffer.AppendNum( KATTraceVersion, EHex );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    53
    // Log to XTI.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    54
    RDebug::Print( KXtiMessage, aProcessId ,&buffer );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    55
    return KErrNone;
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    56
    }
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    57
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    58
TInt ATFastLogProcessEnded( TUint aProcessId, 
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    59
                            TUint aHandleLeakCount )
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    60
    {
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    61
    LOGSTR1( "ATFL ATFastLogProcessEnded()" );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    62
    // Handle leaks.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    63
    if ( aHandleLeakCount > 0 )
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    64
        {
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    65
        // Buffer to trace.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    66
        TBuf<KHandleLeakBufLength> buffer2;
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    67
        buffer2.Format( KHandleLeak16, &KUnknownModule16, aHandleLeakCount );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    68
        // Trace it.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    69
        RDebug::Print( KXtiMessage, aProcessId, &buffer2 );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    70
        }
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    71
    // Process end trace.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    72
    TBuf<KProcessEndBufLength> buffer;
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    73
    buffer.Format( KProcessEnd16, aProcessId );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    74
    buffer.AppendNum( CurrentTime(), EHex);
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    75
    buffer.Append( KNewLineXti );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    76
    RDebug::Print( KXtiMessage, aProcessId, &buffer );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    77
    return KErrNone;
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    78
    }
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    79
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    80
TInt ATFastLogDllLoaded( TUint aProcessId, 
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    81
                                        const TDesC8& aDllName,
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    82
                                        TUint32 aStartAddress,
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    83
                                        TUint32 aEndAddress )
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    84
    {
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    85
    LOGSTR1( "ATFL ATFastLogDllLoaded()" );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    86
    // Timestamp.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    87
    TInt64 time = CurrentTime();
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    88
    // Convert dll name to 16-bit descriptor.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    89
    TBuf<KMaxLibraryName> dll;
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    90
    dll.Copy( aDllName );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    91
    // Buffer to trace.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    92
    TBuf<KDllLoadBufLength> buffer;
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    93
    buffer.Format( KDllLoad16, &dll, time, aStartAddress, aEndAddress );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    94
    RDebug::Print( KXtiMessage, aProcessId, &buffer );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    95
    return KErrNone;
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    96
    }
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    97
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    98
TInt ATFastLogDllUnloaded( TUint aProcessId, const TDesC8& aDllName, TUint32 aStartAddress,
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    99
                                       TUint32 aEndAddress )
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   100
    {
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   101
    LOGSTR1( "ATFL ATFastLogDllUnloaded()" );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   102
    // Timestamp.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   103
    TInt64 time = CurrentTime();
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   104
    // Convert dll name to 16-bit descriptor.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   105
    TBuf<KMaxLibraryName> dll;
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   106
    dll.Copy( aDllName );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   107
    // Buffer to trace.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   108
    TBuf<KDllLoadBufLength> buffer;
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   109
    buffer.Format( KDllUnload16, &dll, time, aStartAddress, aEndAddress );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   110
    RDebug::Print( KXtiMessage, aProcessId, &buffer );   
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   111
    return KErrNone;
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   112
    }
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   113
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   114
TInt ATFastLogMemoryAllocated( TUint aProcessId, TUint32 aMemAddress,
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   115
                                  TFixedArray<TUint32, KATMaxCallstackLength>& aCallstack,
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   116
                                  TInt aSize )
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   117
    {
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   118
    LOGSTR1( "ATFL ATFastLogMemoryAllocated()" );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   119
    // ALLOCH <Memory address> <Time stamp> <Allocation size> <Call stack address count> 
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   120
    // <Call stack address> <Call stack address> ...
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   121
    
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   122
    // Timestamp.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   123
    TInt64 time = CurrentTime();
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   124
    
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   125
    // Trace buffer and pointer to it.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   126
    TBufC<KMemAllocBufLength> buffer;
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   127
    TPtr ptr( buffer.Des() );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   128
    // Append the tag implying a memory allocation line in the data file
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   129
    ptr.Append( KMemoryAllocHeader );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   130
    
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   131
    // Append the start address of this allocation in the 32-bit (max 8 characters)
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   132
    // hexadecimal text format.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   133
    ptr.AppendNum( aMemAddress, EHex );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   134
    
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   135
    // Append the current time in the 64-bit (max 16 characters) hexadecimal text
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   136
    // format
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   137
    ptr.Append( KSpaceXti );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   138
    ptr.AppendNum( time, EHex );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   139
    
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   140
    // Append the size of the allocation in the 32-bit (max 8 characters) hexadecimal
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   141
    // text format.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   142
    ptr.Append( KSpaceXti );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   143
    ptr.AppendNum( aSize, EHex );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   144
    
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   145
    // Search call stack for address count.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   146
    TInt addrCount(0);
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   147
    for ( TInt j = 0; j < aCallstack.Count() ; j++ )
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   148
        {
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   149
        if ( aCallstack.At(j) == 0 )
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   150
            break;
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   151
        addrCount++;
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   152
        }
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   153
    // Current position in call stack.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   154
    TInt addrPos( 0 );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   155
    
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   156
    // Append address count.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   157
    ptr.Append( KSpaceXti );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   158
    ptr.AppendNum( addrCount, EHex );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   159
            
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   160
    // Calculate last item length
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   161
    TInt lastItemLength( KXtiMessage().Length() + KHexa32Length + 
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   162
            KSpaceLength + KNewlineLength );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   163
    
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   164
    TUint packetNumber( 1 );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   165
    
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   166
    // Go through all call stack's memory addresses associated with
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   167
    // this memory allocation 
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   168
    for ( TInt j = 0; j < addrCount; j++ )
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   169
        {
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   170
        // ALLOCF <Memory address> <Time stamp> <Packet number> 
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   171
        // <Call stack address> <Call stack address> ...
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   172
        if ( ptr.Length() <= 0 )
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   173
            {               
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   174
            // Create alloc fragment message header
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   175
            ptr.Append( KMemoryAllocFragment );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   176
            ptr.AppendNum( aMemAddress, EHex );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   177
            ptr.Append( KSpaceXti );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   178
            ptr.AppendNum( time, EHex );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   179
            ptr.Append( KSpaceXti );        
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   180
            ptr.AppendNum( packetNumber, EHex );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   181
            // Increase packet number
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   182
            packetNumber++;
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   183
            }
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   184
      
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   185
        // Append call stack address.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   186
        ptr.AppendFormat( KHexaNumberXti, aCallstack.At( addrPos ) );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   187
        
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   188
        // Move the call stack position.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   189
        addrPos++;
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   190
        
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   191
        // Check if buffer max length exceed
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   192
        if ( lastItemLength + ptr.Length() >= KMemAllocBufLength )
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   193
            {
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   194
            ptr.Append( KNewLineXti );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   195
            // Log through XTI channel 
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   196
            RDebug::Print( KXtiMessage, aProcessId, &buffer );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   197
            // Empty XTI buffer
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   198
            ptr.Delete( 0, ptr.MaxLength() );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   199
            }
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   200
        }
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   201
    // Send last message if exists.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   202
    if ( ptr.Length() > 0 )
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   203
        {
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   204
        ptr.Append( KNewLineXti );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   205
        RDebug::Print( KXtiMessage, aProcessId, &buffer);
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   206
        }
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   207
    return KErrNone;
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   208
    }
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   209
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   210
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   211
TInt ATFastLogMemoryFreed( TUint aProcessId, TUint32 aMemAddress, 
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   212
                              TFixedArray<TUint32, KATMaxCallstackLength>& aFreeCallstack )
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   213
    {
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   214
    LOGSTR1( "ATFL ATFastLogMemoryFreed()" );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   215
    // FREEH <Memory address> <Time tamp> <Call stack address count> <Call stack address>
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   216
    // <Call stack address> ...
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   217
    
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   218
    // Timestamp.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   219
    TInt64 time = CurrentTime();
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   220
    
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   221
    // Trace buffer and pointer to it.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   222
    TBufC<KMemFreedBufLength> buffer;
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   223
    TPtr ptr( buffer.Des() );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   224
 
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   225
    // Append the tag implying a memory allocation line in the data file
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   226
    ptr.Append( KMemoryFreedHeader );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   227
    
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   228
    // Append the start address of this allocation in the 32-bit (max 8 characters)
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   229
    // hexadecimal text format.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   230
    ptr.AppendNum( aMemAddress, EHex );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   231
    
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   232
    // Append timestamp;
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   233
    ptr.Append( KSpaceXti );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   234
    ptr.AppendNum( time, EHex);
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   235
    
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   236
    // Search call stack for address count.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   237
    TInt addrCount(0);
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   238
    for ( TInt j = 0; j < aFreeCallstack.Count() ; j++ )
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   239
        {
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   240
        if ( aFreeCallstack.At(j) == 0 )
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   241
            break;
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   242
        addrCount++;
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   243
        }
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   244
    // Current position in call stack.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   245
    TInt addrPos( 0 );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   246
    
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   247
    // Append address count.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   248
    ptr.Append( KSpaceXti );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   249
    ptr.AppendNum( addrCount, EHex );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   250
            
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   251
    // Calculate last item length
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   252
    TInt lastItemLength( KXtiMessage().Length() + KHexa32Length + 
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   253
            KSpaceLength + KNewlineLength );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   254
    
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   255
    TUint packetNumber( 1 );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   256
    
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   257
    // Go through all call stack's memory addresses associated with
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   258
    // this memory allocation 
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   259
    for ( TInt j = 0; j < addrCount; j++ )
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   260
        {
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   261
        // ALLOCF <Memory address> <Time stamp> <Packet number> 
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   262
        // <Call stack address> <Call stack address> ...
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   263
        if ( ptr.Length() <= 0 )
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   264
            {               
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   265
            // Create alloc fragment message header
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   266
            ptr.Append( KMemoryFreedFragment );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   267
            ptr.AppendNum( aMemAddress, EHex );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   268
            ptr.Append( KSpaceXti );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   269
            ptr.AppendNum( packetNumber, EHex );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   270
            // Increase packet number
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   271
            packetNumber++;
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   272
            }
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   273
      
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   274
        // Append call stack address.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   275
        ptr.AppendFormat( KHexaNumberXti, aFreeCallstack.At( addrPos ) );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   276
        
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   277
        // Move the call stack position.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   278
        addrPos++;
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   279
        
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   280
        // Check if buffer max length exceed
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   281
        if ( lastItemLength + ptr.Length() >= KMemFreedBufLength )
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   282
            {
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   283
            ptr.Append( KNewLineXti );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   284
            // Log through XTI channel 
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   285
            RDebug::Print( KXtiMessage, aProcessId, &buffer );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   286
            // Empty XTI buffer
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   287
            ptr.Delete( 0, ptr.MaxLength() );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   288
            }
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   289
        }
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   290
    // Send last message if exists.
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   291
    if ( ptr.Length() > 0 )
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   292
        {
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   293
        ptr.Append( KNewLineXti );
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   294
        RDebug::Print( KXtiMessage, aProcessId, &buffer);
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   295
        }
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   296
    return KErrNone;   
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   297
    }
f0f2b8682603 Add initial version of AnalyzeTool client under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   298