crashanalysercmd/PerfToolsSharedLibraries/Engine/SymbianNativeTools/Source/h_mem.cpp
changeset 0 818e61de6cd1
equal deleted inserted replaced
-1:000000000000 0:818e61de6cd1
       
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 * 
       
    14 * Description:
       
    15 *
       
    16 */
       
    17 
       
    18 #include <stdlib.h>   
       
    19 #include <malloc.h>
       
    20 #include <stdio.h>
       
    21 #include <string.h>
       
    22 
       
    23 #include "h_utl.h"
       
    24 
       
    25 TAny* HMem::Alloc(TAny * const aBaseAddress,const TUint32 aImageSize)
       
    26 	{
       
    27 	if (aBaseAddress != 0)
       
    28 		{
       
    29 		return 0;
       
    30 		}
       
    31 
       
    32 	TAny *address = malloc(aImageSize);
       
    33 	return (address);
       
    34 	}
       
    35 
       
    36 TAny* HMem::AllocZ( const TUint32 aImageSize )
       
    37 	{
       
    38 	TAny* address = calloc( 1, aImageSize );
       
    39 	return address;
       
    40 	}
       
    41 
       
    42 void HMem::Free(TAny * const aMem)
       
    43 	{
       
    44 	free(aMem);
       
    45 	}
       
    46 
       
    47 void HMem::Copy(TAny * const aDestAddr,const TAny * const aSourceAddr,const TUint32 aLength)
       
    48 	{
       
    49 	memcpy(aDestAddr,aSourceAddr,(size_t)aLength);
       
    50 	}
       
    51 
       
    52 void HMem::Move(TAny * const aDestAddr,const TAny * const aSourceAddr,const TUint32 aLength)
       
    53 	{
       
    54 	memmove(aDestAddr,aSourceAddr,(size_t)aLength);
       
    55 	}
       
    56 
       
    57 void HMem::Set(TAny * const aDestAddr, const TUint8 aFillChar, const TUint32 aLength)
       
    58 	{		
       
    59 	memset(aDestAddr, aFillChar, aLength);
       
    60 	}
       
    61 
       
    62 void HMem::FillZ(TAny * const aDestAddr, const TUint32 aLength)
       
    63 	{		
       
    64 	memset(aDestAddr, 0, aLength);
       
    65 	}
       
    66 
       
    67 TUint HMem::CheckSum(TUint *aPtr, TInt aSize)
       
    68 	{
       
    69 	TUint sum=0;
       
    70 	aSize/=4;
       
    71 	while (aSize-->0)
       
    72 		sum+=*aPtr++;
       
    73 	return sum;
       
    74 	}
       
    75 
       
    76 TUint HMem::CheckSum8(TUint8 *aPtr, TInt aSize)
       
    77 	{
       
    78 	TUint sum=0;
       
    79 	while (aSize-->0)
       
    80 		sum+=*aPtr++;
       
    81 	return sum;
       
    82 	}
       
    83 
       
    84 TUint HMem::CheckSumOdd8(TUint8 *aPtr, TInt aSize)
       
    85 	{
       
    86 	return CheckSumEven8(aPtr+2, aSize-2);
       
    87 	}
       
    88 
       
    89 TUint HMem::CheckSumEven8(TUint8 *aPtr, TInt aSize)
       
    90 	{
       
    91 	TUint sum=0;
       
    92 	while (aSize>0)
       
    93 		{
       
    94 		sum+=(TUint)aPtr[0]+aPtr[1];
       
    95 		aPtr+=4;
       
    96 		aSize-=4;
       
    97 		}
       
    98 	return sum;
       
    99 	}
       
   100 
       
   101 static const TUint32 CrcTab32[256] =
       
   102 	{
       
   103 	0x00000000, 0x77073096, 0xee0e612c, 0x990951ba,
       
   104 	0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
       
   105 	0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
       
   106 	0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,
       
   107 	0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
       
   108 	0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
       
   109 	0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec,
       
   110 	0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,
       
   111 	0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
       
   112 	0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
       
   113 	0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940,
       
   114 	0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
       
   115 	0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116,
       
   116 	0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,
       
   117 	0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
       
   118 	0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,
       
   119 	0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a,
       
   120 	0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
       
   121 	0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818,
       
   122 	0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
       
   123 	0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
       
   124 	0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,
       
   125 	0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c,
       
   126 	0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
       
   127 	0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
       
   128 	0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,
       
   129 	0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
       
   130 	0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,
       
   131 	0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086,
       
   132 	0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
       
   133 	0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4,
       
   134 	0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,
       
   135 	0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
       
   136 	0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,
       
   137 	0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
       
   138 	0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
       
   139 	0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe,
       
   140 	0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,
       
   141 	0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
       
   142 	0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
       
   143 	0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252,
       
   144 	0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
       
   145 	0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60,
       
   146 	0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,
       
   147 	0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
       
   148 	0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,
       
   149 	0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04,
       
   150 	0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
       
   151 	0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a,
       
   152 	0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
       
   153 	0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
       
   154 	0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,
       
   155 	0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e,
       
   156 	0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
       
   157 	0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
       
   158 	0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,
       
   159 	0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
       
   160 	0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,
       
   161 	0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0,
       
   162 	0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
       
   163 	0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6,
       
   164 	0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
       
   165 	0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
       
   166 	0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
       
   167 	};
       
   168 
       
   169 /**
       
   170 Performs a CCITT CRC-32 checksum on the specified data.
       
   171 
       
   172 On return from this function, the referenced 32 bit integer contains the CRC
       
   173 value.
       
   174 
       
   175 @param aCrc		A reference to a 32 bit integer to contain the CRC value. 
       
   176 @param aPtr		A pointer to the start of the data to be checksummed. 
       
   177 @param aLength	The length of the data to be checksummed.
       
   178 */
       
   179 void HMem::Crc32(TUint32& aCrc, const TAny* aPtr, TInt aLength)
       
   180 	{
       
   181 	const TUint8* p = (const TUint8*)aPtr;
       
   182 	const TUint8* q = p + aLength;
       
   183 	TUint32 crc = aCrc;
       
   184 	while (p < q)
       
   185 		crc = (crc >> 8) ^ CrcTab32[(crc ^ *p++) & 0xff];
       
   186 	aCrc = crc;
       
   187 	}