1119 lines
56 KiB
C
1119 lines
56 KiB
C
/* ##H_FILE#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
FILE : CpaMmg.h
|
|
|
|
DESCRIPTION : this file contain all functions and macros used to allocate memory
|
|
and export the necessary structures :
|
|
|
|
Initialisation of the module
|
|
Initialisation of a static bloc
|
|
switch between dynamic and static mode
|
|
Allocate/ReAllocate/Free Memory
|
|
Check function for debugging
|
|
Destroy a static bloc
|
|
Destroy the module
|
|
|
|
VERSION : 5.1.0/Pierrick Crepy/Creation
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
|
|
|
#ifndef __CpaMmg_H__
|
|
#define __CpaMmg_H__
|
|
|
|
/* For DLLs who are using this module : */
|
|
#undef CPA_EXPORT
|
|
#if defined(CPA_WANTS_IMPORT)
|
|
#define CPA_EXPORT __declspec(dllimport)
|
|
#elif defined(CPA_WANTS_EXPORT)
|
|
#define CPA_EXPORT __declspec(dllexport)
|
|
#else
|
|
#define CPA_EXPORT
|
|
#endif
|
|
|
|
/* for emlulate the U64 on Pc*/
|
|
/*#define U64*/
|
|
/*#define u64 __int64*/
|
|
|
|
/* ##INCLUDE#----------------------------------------------------------------------------
|
|
Includes Files
|
|
---------------------------------------------------------------------------------------*/
|
|
#ifndef __ERRMMG_H__
|
|
#include "errMmg.h"
|
|
#endif /*__ERRMMG_H__*/
|
|
|
|
/*#include <stdio.h> /*because lint ==> repeated iclude file */
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif /* __cplusplus */
|
|
|
|
/*/////////////////////////*/
|
|
/* Compilation directive // */
|
|
/*/////////////////////////*/
|
|
#define Modif4Ch /* __MULTI_THREAD_MEMORY_MANAGEMENT__*/
|
|
#define ModifMmgV5_1_0
|
|
#ifdef U64
|
|
#ifndef FINAL_VERSION
|
|
#define __DYNAMIC_MALLOC_ALLOWED__
|
|
#endif /* FINAL_VERSION*/
|
|
#else /* U64 */
|
|
#define __DYNAMIC_MALLOC_ALLOWED__
|
|
#endif /* U64 */
|
|
|
|
/* ##CONSTANTE#--------------------------------------------------------------------------
|
|
Constantes declaration
|
|
---------------------------------------------------------------------------------------*/
|
|
|
|
/*multi thread management*/
|
|
#define C_ucMmgDefaultChannel (0)
|
|
#define C_MaxNbPossibleChannel (255)
|
|
#define C_ucMmgDefaultGroup (0)
|
|
|
|
/* for __DEBUG_MALLOC_MODE__ information*/
|
|
#define C_ulDefaultMaxNbStaticMalloc (100000) /* maximum number of mallocs in a static block*/
|
|
#define C_ulDefaultMaxNbDynamicMalloc (100000) /* maximum number of dynamic malloc*/
|
|
|
|
#ifdef U64
|
|
/*OSMesgQueue *mq, OSMesg *msg*/
|
|
#else
|
|
#define TypeCriticalSection CRITICAL_SECTION
|
|
#endif /* U64 */
|
|
|
|
/* General*/
|
|
#define C_ucTrue (0xFF)
|
|
#define C_ucFalse (0)
|
|
|
|
/* alignment 32 bits:*/
|
|
#ifdef U64
|
|
#define C_uwAllocSize (8) /* for example here we are a 64 bits alignment*/
|
|
#define C_uwShiftAllocSize (3) /* 2^3=8*/
|
|
#define unitAlloc u64
|
|
#else /*U64*/
|
|
#define C_uwAllocSize (4) /* for example here we are a 32 bits alignment*/
|
|
#define C_uwShiftAllocSize (2) /* 2^2=4*/
|
|
#define unitAlloc unsigned long
|
|
#endif /*U64*/
|
|
|
|
/*XB*/
|
|
#ifdef U64
|
|
#include "ultra.h"
|
|
#endif /* U64 */
|
|
/*End XB*/
|
|
|
|
#define C_p_cBlockNotValidKey ((char *)(0XFFFFFFFF))
|
|
|
|
#define E_ucDynamic (0xFF)
|
|
|
|
/*mode parameter of Mmg_fn_vInitSpecificBlock*/
|
|
#define C_NoAlignement 1
|
|
|
|
/*mode parameter of Mmg_fn_vInitSpecificBlock*/
|
|
#define C_BlockWithFreeFlag 0
|
|
#define C_BlockWithoutFreeFlag 1
|
|
#define C_FillTheBlockWithCleanKeyFlag 2
|
|
#define C_Check_AlignementFlag 4
|
|
#define C_Check_OverflowFlag 8
|
|
|
|
|
|
|
|
/* ##TYPEDEF#----------------------------------------------------------------------------
|
|
Types definition
|
|
---------------------------------------------------------------------------------------*/
|
|
|
|
/* ##-########################### */
|
|
/* tdstChannelInfo */
|
|
/* ############################## */
|
|
typedef struct tdstChannelInfo_{
|
|
unsigned long ulThreadId;
|
|
unsigned char ucGroupId;
|
|
}tdstChannelInfo;
|
|
|
|
/* ##-########################### */
|
|
/* tdstGeneralChannelInfo */
|
|
/* ############################## */
|
|
typedef struct tdstGeneralChannelsInfo_{
|
|
unsigned char ucNbchannelUsed;
|
|
unsigned char ucMAxNbChannel;
|
|
tdstChannelInfo * d_stTabChannelInfo;
|
|
}tdstGeneralChannelInfo;
|
|
|
|
/* ##-########################### */
|
|
/* tdstCurrentModeInfo */
|
|
/* ############################## */
|
|
typedef struct tdstCurrentModeInfo_{
|
|
unsigned char ucModuleId;
|
|
unsigned char ucMode;
|
|
void *p_vTdstBlockInfoOrTdstDynInfo;
|
|
}tdstCurrentModeInfo;
|
|
|
|
/* ##-########################### */
|
|
/* tdstBlockInfo */
|
|
/* ############################## */
|
|
typedef struct tdstBlockInfo_{
|
|
char * p_cBeginBlock;
|
|
char * p_cEndBlock;
|
|
char * p_cFirstFree;
|
|
char * p_cMaxMem;
|
|
}tdstBlockInfo;
|
|
|
|
|
|
/* ##GLOBVAR#----------------------------------------------------------------------------
|
|
Globale variable declaration
|
|
---------------------------------------------------------------------------------------*/
|
|
#undef __CPAMMG_EXTERN
|
|
#ifdef __DeclareGlobalVariableInCpaMmg_h__
|
|
#define __CPAMMG_EXTERN /*nothing*/
|
|
#else
|
|
#define __CPAMMG_EXTERN extern
|
|
#endif /*__DeclareGlobalVariableInCpaMmg_h__*/
|
|
|
|
#ifdef _DEBUG
|
|
__CPAMMG_EXTERN CPA_EXPORT unsigned char g_ucBLockedAllocation
|
|
#if defined(__DeclareGlobalVariableInCpaMmg_h__) && !defined(CPA_WANTS_IMPORT)
|
|
= C_ucFalse
|
|
#endif /*__DeclareGlobalVariableInCpaMmg_h__ && CPA_WANTS_IMPORT*/
|
|
;
|
|
#endif /*_DEBUG*/
|
|
|
|
/* General table in order to access to informations about each allocation of all the module for debug mode*/
|
|
__CPAMMG_EXTERN CPA_EXPORT struct tdstBlockInfoPriv_ *g_a_p_stMmgModuleBlocksInfo[C_ucNbOfMaxModule];
|
|
__CPAMMG_EXTERN CPA_EXPORT unsigned char g_a_ucBlocksNbInModule[C_ucNbOfMaxModule];
|
|
|
|
|
|
#ifdef __DYNAMIC_MALLOC_ALLOWED__
|
|
#ifndef _FIRE_DEADCODE_U64_
|
|
__CPAMMG_EXTERN CPA_EXPORT struct tdstDynInfo_ ** g_d_p_stMmgModuleDynInfo;
|
|
#endif /* _FIRE_DEADCODE_U64_ */
|
|
#endif /*__DYNAMIC_MALLOC_ALLOWED__*/
|
|
|
|
/* information about the current mode of allocation*/
|
|
__CPAMMG_EXTERN CPA_EXPORT struct tdstCurrentModeInfo_ * g_d_stCurrentModeInfo;
|
|
|
|
/*information about channel */
|
|
#if (!defined(U64) && !defined(PSX))
|
|
__CPAMMG_EXTERN CPA_EXPORT TypeCriticalSection g_MmgCriticalSection;
|
|
#endif /*U64 || PSX*/
|
|
__CPAMMG_EXTERN CPA_EXPORT tdstGeneralChannelInfo g_stGeneralChannelInfo;
|
|
|
|
|
|
|
|
/*//////////*/
|
|
/* Macros //*/
|
|
/*//////////*/
|
|
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_M_BigBoundSize
|
|
DESCRIPTION : boundering of the size. the size must be a the biggest nearly
|
|
multiple of C_uwAllocSizeRound
|
|
INPUT : Size & the alignement
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#define Mmg_M_BigBoundSize(ulSize, ucAlignment) \
|
|
/* ---------------- */\
|
|
\
|
|
/*lint -save -e774*/\
|
|
if ( (ulSize) & (unsigned long)(ucAlignment-1)) {\
|
|
/*lint -restore*/\
|
|
/*ulSize is not a multiple of ucAlignment. */ \
|
|
/* We round the ulSize at the next upper ucAlignment multiple. */ \
|
|
(ulSize) = ((ulSize) & (~((unsigned long)(ucAlignment-1)))) + ucAlignment;\
|
|
}
|
|
|
|
/* not used not tested*/
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_M_ulSmallBoundSize
|
|
DESCRIPTION : boundering of the size. the size must be a the Smallest nearly multiple of C_uwAllocSize
|
|
INPUT : Size
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#define Mmg_M_ulSmallBoundSize(ulSize) \
|
|
/* ------------------ */\
|
|
\
|
|
(ulSize) = ((ulSize) & (~((unsigned long)(C_uwAllocSize-1))));
|
|
|
|
/* ##M#===================================================================================
|
|
NAME : M_Max
|
|
DESCRIPTION : return the max between 2 values
|
|
INPUT : Value A
|
|
Value B
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#define M_Max(a,b) ((a)>(b) ? (a) : (b))
|
|
/* ----------*/
|
|
|
|
/* macro use to test */
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_M_UpdateFatalDebugError
|
|
DESCRIPTION : Raise an error displaying window message for debugging
|
|
or do nothing
|
|
INPUT : Error Id
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#ifdef __FATAL_DEBUG_ERR_MMG__
|
|
#define Mmg_M_UpdateFatalDebugError(uwMyErrorId) Erm_M_UpdateLastError(Mmg, C_ucErmDefaultChannel, uwMyErrorId, C_lErmNoDebugData, C_ucErmOpenInfoWindow, C_ucAllowStopForDebug, NULL)
|
|
/* ---------------------------*/
|
|
#else /*__FATAL_DEBUG_ERR_MMG__*/
|
|
#define Mmg_M_UpdateFatalDebugError(uwMyErrorId) ;/*Nothing to do*/
|
|
#endif /*__FATAL_DEBUG_ERR_MMG__*/
|
|
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_M_UpdateLastError
|
|
DESCRIPTION : Raise an error displaying window message for debugging
|
|
INPUT : Error Id
|
|
Error String
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#define Mmg_M_UpdateLastError(uwMyErr, szPersonalTxt) Erm_M_UpdateLastError (Mmg, C_ucErmDefaultChannel, uwMyErr, C_lErmNoDebugData, C_ucErmOpenInfoWindow, C_ucAllowStopForDebug, szPersonalTxt);
|
|
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_MulGetThreadId
|
|
DESCRIPTION : Return thread Id of a channel
|
|
INPUT : Channel Id
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#define Mmg_MulGetThreadId(ucChannel) (((g_stGeneralChannelInfo.d_stTabChannelInfo)[ucChannel]).ulThreadId)
|
|
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_MulGetThreadId
|
|
DESCRIPTION : Return group Id of a channel
|
|
INPUT : Channel Id
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#define Mmg_MucGetucGroupId(ucChannel) (((g_stGeneralChannelInfo.d_stTabChannelInfo)[ucChannel]).ucGroupId)
|
|
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_M_szAddChannelInfoToSzInitTxt
|
|
DESCRIPTION : Add channel info in a string
|
|
INPUT : String
|
|
Channel Id
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#define Mmg_M_szAddChannelInfoToSzInitTxt(szInitTxt, ucChannel)\
|
|
{\
|
|
if (ucChannel == C_ucMmgDefaultChannel){\
|
|
sprintf (szInitTxt, "%sMemory Channel=Default\n", szInitTxt);\
|
|
}\
|
|
else{\
|
|
sprintf (szInitTxt, "%s{Memory Channel=%d [0X%X, %d]\n", szInitTxt, ucChannel, Mmg_MulGetThreadId(ucChannel), Mmg_MucGetucGroupId(ucChannel));\
|
|
}\
|
|
}
|
|
|
|
#ifdef __ERROR_STRINGS__
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_M_UpdateLastErrorWithModuleId
|
|
DESCRIPTION : Raise an error using module Id
|
|
INPUT : Module Id
|
|
Error Id
|
|
Error text
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#define Mmg_M_UpdateLastErrorWithModuleId(ucModuleId, uwMyErr, szPersonalTxt) Mmg_fn_v_UpdateLastErrorWithModuleId(ucModuleId, uwMyErr, szPersonalTxt)
|
|
#else /*__ERROR_STRINGS__*/
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_M_UpdateLastErrorWithModuleIdAnducModeReference
|
|
DESCRIPTION : Raise an error using module Id and allocation mode
|
|
INPUT : Module Id
|
|
Allocation Mode
|
|
Error Id
|
|
Error text
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#define Mmg_M_UpdateLastErrorWithModuleIdAnducModeReference(ucModuleId, ucMode, uwMyErr, szPersonalTxt) Erm_M_UpdateLastError (Mmg, C_ucErmDefaultChannel, uwMyErr, C_lErmNoDebugData, C_ucErmOpenInfoWindow, C_ucAllowStopForDebug, szPersonalTxt);
|
|
#endif /*__ERROR_STRINGS__*/
|
|
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_M_UpdateLastErrorWithCurrentModeInfo
|
|
DESCRIPTION : Raise an error using current mode info
|
|
INPUT : Error Id
|
|
Error string
|
|
Channel Id
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#ifdef __ERROR_STRINGS__
|
|
#define Mmg_M_UpdateLastErrorWithCurrentModeInfo(uwMyErr, szPersonalTxt, ucChannel) Mmg_fn_v_UpdateLastErrorWithCurrentModeInfo(uwMyErr, szPersonalTxt, ucChannel)
|
|
#else /*__ERROR_STRINGS__*/
|
|
#define Mmg_M_UpdateLastErrorWithCurrentModeInfo(uwMyErr, szPersonalTxt, ucChannel) Erm_M_UpdateLastError (Mmg, C_ucErmDefaultChannel, uwMyErr, C_lErmNoDebugData, C_ucErmOpenInfoWindow, C_ucAllowStopForDebug, szPersonalTxt);
|
|
#endif /*__ERROR_STRINGS__*/
|
|
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_M_UpdateLastErrorWithModuleIdAnducModeReference
|
|
DESCRIPTION : Raise an error using module Id and allocation mode
|
|
INPUT : Module Id
|
|
Allocation Mode
|
|
Error Id
|
|
Error string
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#ifdef __ERROR_STRINGS__
|
|
#define Mmg_M_UpdateLastErrorWithModuleIdAnducModeReference(ucModuleId, ucMode, uwMyErr, szPersonalTxt) Mmg_fn_v_UpdateLastErrorWithModuleIdAnducModeReference(ucModuleId, ucMode, uwMyErr, szPersonalTxt)
|
|
#else /*__ERROR_STRINGS__*/
|
|
#define Mmg_M_UpdateLastErrorWithModuleIdAnducModeReference(ucModuleId, ucMode, uwMyErr, szPersonalTxt) Erm_M_UpdateLastError (Mmg, C_ucErmDefaultChannel, uwMyErr, C_lErmNoDebugData, C_ucErmOpenInfoWindow, C_ucAllowStopForDebug, szPersonalTxt);
|
|
#endif /*__ERROR_STRINGS__*/
|
|
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_M_ucIsStaticMode
|
|
DESCRIPTION : Return true if channel is in static mode
|
|
INPUT : Channel Id
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#define Mmg_M_ucIsStaticMode(ucChannel) ((g_d_stCurrentModeInfo[ucChannel]).ucMode!= E_ucDynamic)
|
|
/* --------------------*/
|
|
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_M_SetModeAlloc
|
|
DESCRIPTION : Compatibility maccro using default channel
|
|
INPUT : Module abbreviation
|
|
New Mode
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#ifdef Modif4Ch
|
|
#define Mmg_M_SetModeAlloc(ModuleAbreviation, ucNewMode) Mmg_M_SetModeAlloc4Ch(ModuleAbreviation, ucNewMode, C_ucMmgDefaultChannel)
|
|
#endif /*Modif4Ch*/
|
|
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_M_SetModeAlloc4Ch
|
|
DESCRIPTION : Set a new allocation mode in a channel
|
|
INPUT : Module abbreviation
|
|
New Mode
|
|
Channel Id
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#define Mmg_M_SetModeAlloc4Ch(ModuleAbreviation, ucNewMode, C_ucMmgDefaultChannel) Mmg_fn_v_SetModeAlloc(g_uc##ModuleAbreviation##ModuleId, ucNewMode, C_ucMmgDefaultChannel)
|
|
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_M_InitMmg
|
|
DESCRIPTION : Compatibility maccro using default max dynamic malloc
|
|
INPUT : Module abbreviation
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#ifdef ModifMmgV5_1_0
|
|
#define Mmg_M_InitMmg(ModuleName) Mmg_M_InitMmgV5_1_0(ModuleName, C_ulDefaultMaxNbDynamicMalloc)
|
|
#endif /*ModifMmgV5_1_0*/
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_M_InitMmgV5_1_0
|
|
DESCRIPTION : Initialization of a module to use memory
|
|
INPUT : Module abbreviation
|
|
Nb max dynamic malloc
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#define Mmg_M_InitMmgV5_1_0(ModuleName, ulMaxNbDynamicMalloc) Mmg_fn_v_InitMmg(g_uc##ModuleName##ModuleId, E_uc##ModuleName##MaxBlocksNb, ulMaxNbDynamicMalloc)
|
|
|
|
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_MCreateCriticalSection
|
|
Mmg_MEnterCriticalSection
|
|
Mmg_MLeaveCriticalSection
|
|
Mmg_MDeleteCriticalSection
|
|
DESCRIPTION : Maccros to create, lock, unlock and destroy a critical section
|
|
Do nothing on Ultra 64
|
|
INPUT : Module abbreviation
|
|
Nb max dynamic malloc
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#if (defined(U64) || defined(PSX) )
|
|
#define Mmg_MCreateCriticalSection() /*Nothing to do*/
|
|
#define Mmg_MEnterCriticalSection() /*Nothing to do*/
|
|
#define Mmg_MLeaveCriticalSection() /*Nothing to do*/
|
|
#define Mmg_MDeleteCriticalSection() /*Nothing to do*/
|
|
#else /*not U64 and not PSX*/
|
|
#define Mmg_MCreateCriticalSection() InitializeCriticalSection (&g_MmgCriticalSection)
|
|
#define Mmg_MEnterCriticalSection() EnterCriticalSection (&g_MmgCriticalSection)
|
|
#define Mmg_MLeaveCriticalSection() LeaveCriticalSection (&g_MmgCriticalSection)
|
|
#define Mmg_MDeleteCriticalSection() DeleteCriticalSection (&g_MmgCriticalSection)
|
|
#endif /*u64*/
|
|
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_M_InitBlock
|
|
DESCRIPTION : Compatibility maccro using default max static malloc
|
|
INPUT : Module abbreviation
|
|
Block Id
|
|
Size of the block
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#ifdef ModifMmgV5_1_0
|
|
#define Mmg_M_InitBlock(ModuleAbreviation, ucBlockId, ulSize) Mmg_M_InitBlockV5_1_0(ModuleAbreviation, ucBlockId, ulSize, C_ulDefaultMaxNbStaticMalloc)
|
|
#endif /* ModifMmgV5_1_0 */
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_M_InitBlockV5_1_0
|
|
DESCRIPTION : Initialization of a static block
|
|
INPUT : Module abbreviation
|
|
Block Id
|
|
Size of the block
|
|
Max static allocation
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#define Mmg_M_InitBlockV5_1_0(ModuleAbreviation, ucBlockId, ulSize, ulMaxNbStaticMalloc) Mmg_fn_vInitSpecificBlock (ucBlockId, g_uc##ModuleAbreviation##ModuleId, g_a_p_stMmgModuleBlocksInfo[g_uc##ModuleAbreviation##ModuleId], ulSize, ulMaxNbStaticMalloc, C_NoAlignement, C_BlockWithFreeFlag)
|
|
#define Mmg_M_InitSpecificBlock(ModuleAbreviation, ucBlockId, ulSize, ulMaxNbStaticMalloc, ucAlignment, ucMode) Mmg_fn_vInitSpecificBlock (ucBlockId, g_uc##ModuleAbreviation##ModuleId, g_a_p_stMmgModuleBlocksInfo[g_uc##ModuleAbreviation##ModuleId], ulSize, ulMaxNbStaticMalloc, ucAlignment, ucMode)
|
|
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_M_FreeBlock
|
|
DESCRIPTION : Free all allocation in a block
|
|
INPUT : Module abbreviation
|
|
Block Id
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#define Mmg_M_FreeBlock(ModuleAbreviation, ucBlockId) Mmg_fn_vFreeBlock (ucBlockId, g_uc##ModuleAbreviation##ModuleId, g_a_p_stMmgModuleBlocksInfo[g_uc##ModuleAbreviation##ModuleId])
|
|
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_M_DeleteBlock
|
|
DESCRIPTION : Destroy all resource allocate for the management of a block
|
|
INPUT : Module abbreviation
|
|
Block Id
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#define Mmg_M_DeleteBlock(ModuleAbreviation, ucBlockId) Mmg_fn_vDeleteBlock (ucBlockId, g_uc##ModuleAbreviation##ModuleId, g_a_p_stMmgModuleBlocksInfo[g_uc##ModuleAbreviation##ModuleId])
|
|
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_M_PrintAllDynamicMalloc
|
|
DESCRIPTION : Print all dynamic allocation done by a module
|
|
INPUT : Module abbreviation
|
|
Sort before print
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#define Mmg_M_PrintAllDynamicMalloc(ModuleAbreviation, ucSorted)\
|
|
Mmg_fn_vPrintAllDynamicMalloc (g_uc##ModuleAbreviation##ModuleId, g_d_p_stMmgModuleDynInfo+g_uc##ModuleAbreviation##ModuleId, ucSorted);
|
|
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_M_PrintMapOfBlock
|
|
DESCRIPTION : Print map of static allocation done in a block
|
|
INPUT : Module abbreviation
|
|
Block Id
|
|
Sort before print
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#define Mmg_M_PrintMapOfBlock(ModuleAbreviation, ucBlockId, ucSorted)\
|
|
Mmg_fn_vPrintMapOfBlock (g_uc##ModuleAbreviation##ModuleId, g_a_p_stMmgModuleBlocksInfo[g_uc##ModuleAbreviation##ModuleId], ucBlockId, ucSorted);
|
|
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_M_PrintDebugMapOfblock
|
|
DESCRIPTION : Print map of static allocation done in a block
|
|
INPUT : Module abbreviation
|
|
Block Id
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#define Mmg_M_PrintDebugMapOfblock(ModuleAbreviation, ucBlockId)\
|
|
Mmg_fn_vPrintDebugMapOfBlock (g_uc##ModuleAbreviation##ModuleId, g_a_p_stMmgModuleBlocksInfo[g_uc##ModuleAbreviation##ModuleId], ucBlockId);
|
|
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_M_PrintBlockStatisticWithModuleId
|
|
DESCRIPTION : Print statistics on a block
|
|
INPUT : Module Id
|
|
Block Id
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#define Mmg_M_PrintBlockStatisticWithModuleId(ucModuleId, ucBlockId) \
|
|
Mmg_fn_vPrintBlockStatistic (ucModuleId, g_a_p_stMmgModuleBlocksInfo[ucModuleId], ucBlockId);
|
|
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_M_PrintBlockStatistic
|
|
DESCRIPTION : Print statistics on a block
|
|
INPUT : Module abbreviation
|
|
Block Id
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#define Mmg_M_PrintBlockStatistic(ModuleAbreviation, ucBlockId) \
|
|
Mmg_fn_vPrintBlockStatistic (g_uc##ModuleAbreviation##ModuleId, g_a_p_stMmgModuleBlocksInfo[g_uc##ModuleAbreviation##ModuleId], ucBlockId);
|
|
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_M_PrintDynamicMallocStatistic
|
|
DESCRIPTION : Print statistics on dynamic allocation of a module
|
|
INPUT : Module abbreviation
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#define Mmg_M_PrintDynamicMallocStatistic(ModuleAbreviation)\
|
|
Mmg_fn_vPrintDynamicMallocStatistic (g_uc##ModuleAbreviation##ModuleId, g_d_p_stMmgModuleDynInfo+g_uc##ModuleAbreviation##ModuleId);
|
|
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_M_PrintUsedStaticMemoryInModule
|
|
DESCRIPTION : Print static memory used by a module
|
|
INPUT : Module abbreviation
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#define Mmg_M_PrintUsedStaticMemoryInModule(ModuleName)\
|
|
Mmg_fn_vPrintUsedStaticMemory (g_uc##ModuleName##ModuleId, g_a_p_stMmgModuleBlocksInfo[g_uc##ModuleName##ModuleId], E_uc##ModuleName##MaxBlocksNb);
|
|
|
|
/*XB*/
|
|
#ifdef CHECK_MEMORY
|
|
#define Mmg_M_CheckMemory(ModuleName)\
|
|
Mmg_fn_vCheckMemory(g_uc##ModuleName##ModuleId, g_a_p_stMmgModuleBlocksInfo[g_uc##ModuleName##ModuleId], E_uc##ModuleName##MaxBlocksNb)
|
|
#endif /* CHECK_MEMORY */
|
|
/*End XB*/
|
|
|
|
/* XB 02/06/99 */
|
|
#ifdef U64
|
|
#ifndef FINAL_VERSION
|
|
#define Mmg_M_GetUsedStaticMemory(ModuleName)\
|
|
Mmg_fn_ulGetUsedStaticMemory(g_uc##ModuleName##ModuleId, g_a_p_stMmgModuleBlocksInfo[g_uc##ModuleName##ModuleId], E_uc##ModuleName##MaxBlocksNb)
|
|
#endif /* !FINAL_VERSION */
|
|
/* End XB 02/06/99 */
|
|
#else /* pas u64 */
|
|
#define Mmg_M_GetUsedStaticMemory(ModuleName) 0
|
|
#endif /* u64 */
|
|
|
|
|
|
/*Macros in order to acces to static block information*/
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_M_b_ucTheModuleUseStaticMemory
|
|
DESCRIPTION : return true if a module use static memory
|
|
INPUT : Module Id
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#define Mmg_M_b_ucTheModuleUseStaticMemory(ucModuleId) (g_a_p_stMmgModuleBlocksInfo[ucModuleId]!= NULL)
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_M_ucGetNbOfBlocksUsedInModule
|
|
DESCRIPTION : return the number of sttic block used in a module
|
|
INPUT : Module Id
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#define Mmg_M_ucGetNbOfBlocksUsedInModule(ucModuleId) g_a_ucBlocksNbInModule[ucModuleId]
|
|
|
|
|
|
/* ##FUNCDEF#----------------------------------------------------------------------------
|
|
Functions definition
|
|
---------------------------------------------------------------------------------------*/
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_cCheckAlignmentValidity
|
|
DESCRIPTION : check if alignement constant are valide
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
extern CPA_EXPORT void Mmg_fn_cCheckAlignmentValidity (void);
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_vTestMalloc
|
|
DESCRIPTION : Check integrity for all allocation (only in debug mode)
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
extern CPA_EXPORT void Mmg_fn_vTestMalloc(void);
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_vTestMallocIntegrityAt
|
|
DESCRIPTION : Check the integrity of an allocated zone (only in debug mode)
|
|
INPUT : Pointer on the block structure
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
extern CPA_EXPORT void Mmg_fn_vTestMallocIntegrityAt(void *p_vMemBlock);
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_vPrintUsedStaticMemory
|
|
DESCRIPTION : this function print the state of the statsic memory in
|
|
the file C_szErrorLogFileName
|
|
INPUT : Module Id
|
|
poniter on a block structure
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
extern CPA_EXPORT void Mmg_fn_vPrintUsedStaticMemory(unsigned char ucModuleId, struct tdstBlockInfoPriv_ * a_stMyBlockInfo, unsigned char ucModuleMaxBlocksNb);
|
|
|
|
/*XB*/
|
|
#ifdef CHECK_MEMORY
|
|
extern CPA_EXPORT void Mmg_fn_vCheckMemory(unsigned char ucModuleId, struct tdstBlockInfoPriv_ * a_stMyBlockInfo, unsigned char ucModuleMaxBlocksNb);
|
|
#endif /* CHECK_MEMORY */
|
|
/*End XB*/
|
|
|
|
/* XB 02/06/99 */
|
|
#ifndef FINAL_VERSION
|
|
extern CPA_EXPORT unsigned long Mmg_fn_ulGetUsedStaticMemory(unsigned char ucModuleId, struct tdstBlockInfoPriv_ * a_stMyBlockInfo, unsigned char ucModuleMaxBlocksNb);
|
|
#endif /* !FINAL_VERSION */
|
|
/* End XB 02/06/99 */
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_vInitBlock
|
|
DESCRIPTION : Make the real allocation and init variables for block managing
|
|
INPUT : Block Id
|
|
Module Id
|
|
Block Structure
|
|
Size of the block
|
|
Max number of allocation in the block (only used for debugging)
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
extern CPA_EXPORT void Mmg_fn_vInitSpecificBlock (unsigned char ucBlockId, unsigned char ucModuleId, struct tdstBlockInfoPriv_ *p_stMyBlocksInfo, unsigned long ulSize, unsigned long ulMaxNbStaticMalloc, unsigned char ucAlignment, unsigned char ucMode);
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_vFreeBlock
|
|
DESCRIPTION : Re-init bloc variables to free all allocation in the block
|
|
INPUT : Block Id
|
|
Module Id
|
|
Block Structure
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
extern CPA_EXPORT void Mmg_fn_vFreeBlock (unsigned char ucBlockId, unsigned char ucModuleId, struct tdstBlockInfoPriv_ *p_stMyBlocksInfo);
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_vDeleteBlock
|
|
DESCRIPTION : Free Memory and invalidate the block
|
|
INPUT : Block Id
|
|
Module Id
|
|
Block Structure
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
extern CPA_EXPORT void Mmg_fn_vDeleteBlock (unsigned char ucBlockId, unsigned char ucModuleId, struct tdstBlockInfoPriv_ *p_stMyBlocksInfo);
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_vPrintAllDynamicMalloc
|
|
DESCRIPTION : Print the map of dynamic allocation for a module (only in debug mode)
|
|
INPUT : Module Id
|
|
Pointer on dynamic malloc info structure
|
|
Flag to indicate that info must be sorted
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
#ifdef __DYNAMIC_MALLOC_ALLOWED__
|
|
#ifdef __DEBUG_MALLOC_MODE__
|
|
extern CPA_EXPORT void Mmg_fn_vPrintAllDynamicMalloc (unsigned char ucModuleId, struct tdstDynInfo_ *p_stMyDynInfo, unsigned char ucSorted);
|
|
#endif /*__DYNAMIC_MALLOC_ALLOWED__*/
|
|
#endif /*__DEBUG_MALLOC_MODE__*/
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_vPrintMapOfBlock
|
|
DESCRIPTION : Print the map of static allocation for a block (only in debug mode)
|
|
INPUT : Module Id
|
|
Pointer on block info structure
|
|
Block Id
|
|
Flag to indicate that info must be sorted
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
extern CPA_EXPORT void Mmg_fn_vPrintMapOfBlock (unsigned char ucModuleId, struct tdstBlockInfoPriv_ *p_stMyBlocksInfo, unsigned char ucBlockId, unsigned char ucSorted);
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_vPrintDebugMapOfBlock
|
|
DESCRIPTION : Print the map of static allocation for a block (only in debug mode)
|
|
INPUT : Module Id
|
|
Pointer on block info structure
|
|
Block Id
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
extern CPA_EXPORT void Mmg_fn_vPrintDebugMapOfBlock (unsigned char ucModuleId, struct tdstBlockInfoPriv_ *p_stMyBlocksInfo, unsigned char ucBlockId);
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_vPrintBlockStatistic
|
|
DESCRIPTION : Print statistic on a block (only in debug mode)
|
|
INPUT : Module Id
|
|
Pointer on block info structure
|
|
Block Id
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
extern CPA_EXPORT void Mmg_fn_vPrintBlockStatistic (unsigned char ucModuleId, struct tdstBlockInfoPriv_ *p_stMyBlocksInfo, unsigned char ucBlockId);
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_vPrintDynamicMallocStatistic
|
|
DESCRIPTION : Print statistic on a dynamic allocation of a module (only in debug mode)
|
|
INPUT : Module Id
|
|
Pointer on block info structure
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
#ifdef __DEBUG_MALLOC_MODE__
|
|
#ifdef __DYNAMIC_MALLOC_ALLOWED__
|
|
extern CPA_EXPORT void Mmg_fn_vPrintDynamicMallocStatistic (unsigned char ucModuleId, struct tdstDynInfo_ *p_stMyDynInfo);
|
|
#endif/* __DYNAMIC_MALLOC_ALLOWED__*/
|
|
#endif /*__DEBUG_MALLOC_MODE__*/
|
|
|
|
#ifdef __DYNAMIC_MALLOC_ALLOWED__
|
|
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_fn_p_vAlloc Mmg_fn_vFree Mmg_fn_p_vRealloc
|
|
DESCRIPTION : Compatibility maccro using default channel
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#ifdef Modif4Ch
|
|
#define Mmg_fn_p_vAlloc(ulSize) fn_p_vGenAlloc (ulSize, C_ucMmgDefaultChannel)
|
|
#define Mmg_fn_vFree(p_vMmgBlock) fn_vGenFree (p_vMmgBlock, C_ucMmgDefaultChannel)
|
|
#define Mmg_fn_p_vRealloc(p_vMmgBlock, ulSize) fn_p_vGenRealloc (p_vMmgBlock, ulSize, C_ucMmgDefaultChannel)
|
|
#endif /*Modif4Ch*/
|
|
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_fn_p_vAlloc4Ch
|
|
DESCRIPTION : Allocate a memory zone in the channel using the corresponding Mode
|
|
INPUT : Size
|
|
Channel Id
|
|
OUTPUT : Pointeur on the zone allocated
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
#define Mmg_fn_p_vAlloc4Ch(ulSize, ucChannel) fn_p_vGenAlloc (ulSize, ucChannel)
|
|
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_fn_vFree4Ch
|
|
DESCRIPTION : Free a memory zone in the channel using the corresponding Mode
|
|
INPUT : Pointer on the zone allocated
|
|
Channel Id
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
#define Mmg_fn_vFree4Ch(p_vMmgBlock, ucChannel) fn_vGenFree (p_vMmgBlock, ucChannel)
|
|
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_fn_p_vRealloc4Ch
|
|
DESCRIPTION : Reallocate a memory zone in the channel using the corresponding Mode
|
|
INPUT : Pointer on the zone allocated
|
|
Size
|
|
Channel Id
|
|
OUTPUT : Pointeur on the new zone allocated
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
#define Mmg_fn_p_vRealloc4Ch(p_vMmgBlock, ulSize, ucChannel) fn_p_vGenRealloc (p_vMmgBlock, ulSize, ucChannel)
|
|
|
|
#else /* __DYNAMIC_MALLOC_ALLOWED__ not defined*/
|
|
|
|
#ifdef Modif4Ch
|
|
#define Mmg_fn_p_vAlloc(ulSize) fn_p_vStaAlloc (ulSize, C_ucMmgDefaultChannel)
|
|
#endif /*Modif4Ch*/
|
|
#define Mmg_fn_p_vAlloc4Ch(ulSize, ucChannel) fn_p_vStaAlloc (ulSize, ucChannel)
|
|
extern CPA_EXPORT void * fn_p_vStaAlloc (unsigned long ulSize, unsigned char ucChannel);
|
|
|
|
#ifdef Modif4Ch
|
|
#define Mmg_fn_vFree(p_vMmgBlock) fn_vStaFree (p_vMmgBlock, C_ucMmgDefaultChannel)
|
|
#endif /*Modif4Ch*/
|
|
#define Mmg_fn_vFree4Ch(p_vMmgBlock, ucChannel) fn_vStaFree (p_vMmgBlock, ucChannel)
|
|
extern CPA_EXPORT void fn_vStaFree (void *p_vMmgBlock, unsigned char ucChannel);
|
|
|
|
#ifdef Modif4Ch
|
|
#define Mmg_fn_p_vRealloc(p_vMmgBlock, ulSize) fn_p_vStaRealloc (p_vMmgBlock, ulSize, C_ucMmgDefaultChannel)
|
|
#endif /*Modif4Ch*/
|
|
#define Mmg_fn_p_vRealloc4Ch(p_vMmgBlock, ulSize, ucChannel) fn_p_vStaRealloc (p_vMmgBlock, ulSize, ucChannel)
|
|
extern CPA_EXPORT void * fn_p_vStaRealloc (void *p_vMmgBlock, unsigned long ulSize, unsigned char ucChannel);
|
|
|
|
#endif /* __DYNAMIC_MALLOC_ALLOWED__*/
|
|
|
|
#ifdef __DYNAMIC_MALLOC_ALLOWED__
|
|
extern CPA_EXPORT void * fn_p_vGenAlloc (unsigned long ulSize, unsigned char ucChannel);
|
|
extern CPA_EXPORT void fn_vGenFree (void *p_vMmgBlock, unsigned char ucChannel);
|
|
extern CPA_EXPORT void * fn_p_vGenRealloc (void *p_vMmgBlock, unsigned long ulSize, unsigned char ucChannel);
|
|
#endif /* __DYNAMIC_MALLOC_ALLOWED__*/
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_v_ClearLogFile
|
|
DESCRIPTION : Clear the log file C_szMmgLogFileName
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
extern CPA_EXPORT void Mmg_fn_v_ClearLogFile(void);
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_v_PrintInfoMalloc
|
|
DESCRIPTION : Add a string in the log file C_szMmgLogFileName
|
|
INPUT : String to print
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
extern CPA_EXPORT void Mmg_fn_v_PrintInfoMalloc(char *p_cTxt);
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_vTestNbFreeIntheCurentMode
|
|
DESCRIPTION : Check the validity of nb frre on a channel(only in debug mode)
|
|
INPUT : Channel Id
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
void Mmg_fn_vTestNbFreeIntheCurentMode(unsigned char ucChannel);
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_vTestNbFree
|
|
DESCRIPTION : Check the validity of nb free in a static bloc (only in debug mode)
|
|
INPUT : Module Id
|
|
Block Id
|
|
Pointer on a block info structure
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
void Mmg_fn_vTestNbFree(unsigned char ucModuleId, unsigned char ucBlockId, struct tdstBlockInfoPriv_ *p_stBlockInfo);
|
|
|
|
/* ##M#===================================================================================
|
|
NAME : Mmg_fn_vBlockGarbageCollector
|
|
DESCRIPTION : Compatibility maccro using default channel
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Crepy Pierrick
|
|
=======================================================================================*/
|
|
#ifdef Modif4Ch
|
|
#define Mmg_fn_vBlockGarbageCollector(a, b) Mmg_fn_vBlockGarbageCollector4Ch(a, b, C_ucMmgDefaultChannel)
|
|
#endif /* Modif4Ch */
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_vBlockGarbageCollector4Ch
|
|
DESCRIPTION : Do a garbage collector on a block, beware all pointer that point into
|
|
the bloc must be pass in parameter (even local pointer in the block)
|
|
INPUT : Table of pointer (point into the block)
|
|
Max Malloc in the block
|
|
Channel Id
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
extern CPA_EXPORT void Mmg_fn_vBlockGarbageCollector4Ch(void** a_pp_vTab[], unsigned short uwMaxNbMallocInBlock, unsigned char ucChannel);
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_vBlockGarbageCollector4Ch
|
|
DESCRIPTION : return Block Id & beginning address if found
|
|
INPUT : Pointer on a zone
|
|
pointer to stock the block Id
|
|
pointer to stock the beginning address of the block
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
extern CPA_EXPORT void Mmg_fn_vWhereIs (void * p_vPtr, unsigned short *p_uwModuleBlockId, void ** pp_vBeginAdr);
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_p_vGiveTheBeginingAddress
|
|
DESCRIPTION : return the beginning address of a block
|
|
INPUT : Block Id
|
|
OUTPUT : address of the block beginning
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
extern CPA_EXPORT void * Mmg_fn_p_vGiveTheBeginingAddress (unsigned short uwModuleBlockId);
|
|
|
|
#ifdef _DEBUG
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_vLockAlloaction
|
|
DESCRIPTION : Allow blocking of all alloc operation
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
extern CPA_EXPORT void Mmg_fn_vLockAlloaction();
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_vUnLockAlloaction
|
|
DESCRIPTION : Allow unblocking of all alloc operation
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
extern CPA_EXPORT void Mmg_fn_vUnLockAlloaction();
|
|
#endif /*_DEBUG*/
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_ucGiveChannelId
|
|
DESCRIPTION : Provide a unique channel identificator for a couple (Thraed,group)
|
|
BEWARE : always use the default group
|
|
INPUT : Thraed Id
|
|
Group Id
|
|
OUTPUT : Channel Id
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
extern CPA_EXPORT unsigned char Mmg_fn_ucGiveChannelId(unsigned long ulThreadId, unsigned char ucGroupId);
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_vReleaseChannelId
|
|
DESCRIPTION : release a channel previuosly return by Mmg_fn_ucGiveChannelId
|
|
to re-use this channel later
|
|
INPUT : Channel Id
|
|
=========================================================================================
|
|
CREATION : 25-11-97/Carlos Torres
|
|
=======================================================================================*/
|
|
extern CPA_EXPORT void Mmg_fn_vReleaseChannelId(unsigned char ucChannelId);
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_vFirstInitMmgModule
|
|
DESCRIPTION : Initialization of the Mmg module MUST be use before using MMG functions
|
|
INPUT : Max number of channel authorized
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
extern CPA_EXPORT void Mmg_fn_vFirstInitMmgModule (unsigned char ucMAxNbChannel);
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_v_InitMmg
|
|
DESCRIPTION : Initialization of Mmg for another module. MUST be done before the module
|
|
can use MMG functions.
|
|
INPUT : Module Id
|
|
Max static block
|
|
Max dynamic allocation allowed
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
extern CPA_EXPORT void Mmg_fn_v_InitMmg(unsigned char ucModuleId, unsigned char ucMaxBlocksNb, unsigned long ulMaxNbDynamicMalloc);
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_vStopMmgModule
|
|
DESCRIPTION : Destroy all ressource allocated by MMG. MUST be use before the end of the program
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
extern CPA_EXPORT void Mmg_fn_vStopMmgModule();
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_v_SetModeAlloc
|
|
DESCRIPTION : Set the mode dynamic or static (choosing a block) for a channel
|
|
INPUT : Module Id
|
|
New Mode
|
|
Channel Id
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
extern CPA_EXPORT void Mmg_fn_v_SetModeAlloc(unsigned char ucModuleId, unsigned char ucNewMode, unsigned char ucChannel);
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_v_InitMmg
|
|
DESCRIPTION : Destroy all ressource allocated for the management of memory for a module
|
|
INPUT : Module Id
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
extern CPA_EXPORT void Mmg_fn_v_StopMmg(unsigned char ucModuleId);
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_v_PrintAllocationsUsedForMmg
|
|
DESCRIPTION : Print statistic concerning the memory used to manage allocation
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
extern CPA_EXPORT void Mmg_fn_v_PrintAllocationsUsedForMmg();
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_vGiveInformationBlock
|
|
DESCRIPTION : Give information data on a block
|
|
-> address of block beginning
|
|
-> address of block end
|
|
-> address of the first free
|
|
-> the maximum address reached (different of the last address used)
|
|
INPUT : Module Id
|
|
Block ID
|
|
pointer on structure of block info
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
extern CPA_EXPORT void Mmg_fn_vGiveInformationBlock(unsigned char ucModuleId, unsigned char ucBlockId, struct tdstBlockInfo_ *p_stMyBlockInfo);
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_vSaveInformationBlock
|
|
DESCRIPTION : Init a block with the following info structure
|
|
-> address of block beginning
|
|
-> address of block end
|
|
-> address of the first free
|
|
-> the maximum address reached (different of the last address used)
|
|
INPUT : Module Id
|
|
Block ID
|
|
pointer on structure of block info
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
extern CPA_EXPORT void Mmg_fn_vSaveInformationBlock(unsigned char ucModuleId, unsigned char ucBlockId, struct tdstBlockInfo_ *p_stMyBlockInfo);
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_ulSizeOfUsefullMemory
|
|
DESCRIPTION : return the size of the usefull memory in a block
|
|
INPUT : Module Id
|
|
Block ID
|
|
OUTPUT : size of usefull memory
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
extern CPA_EXPORT unsigned long Mmg_fn_ulSizeOfUsefullMemory (unsigned char ucModuleId, unsigned char ucBlockId);
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_ulmsize
|
|
DESCRIPTION : return the size in byte used for the allocation of a zone
|
|
INPUT : Pointer on the allocated zone
|
|
OUTPUT : Real size of the zone (including the management data)
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
extern CPA_EXPORT unsigned long Mmg_fn_ulmsize(void *p_vMemBlock);
|
|
|
|
#ifdef __ERROR_STRINGS__
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_v_UpdateLastErrorWithModuleId
|
|
DESCRIPTION : raise an error using module Id
|
|
INPUT : Module Id
|
|
Error to raise
|
|
Message to display
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
extern CPA_EXPORT void Mmg_fn_v_UpdateLastErrorWithModuleId(unsigned char ucModuleId,unsigned short uwMyErr, char *szPersonalTxt);
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_v_UpdateLastErrorWithCurrentModeInfo
|
|
DESCRIPTION : raise an error using channel
|
|
INPUT : Error to raise
|
|
Message to display
|
|
Channel Id
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
extern CPA_EXPORT void Mmg_fn_v_UpdateLastErrorWithCurrentModeInfo(unsigned short uwMyErr,char * szPersonalTxt,unsigned char ucChannel);
|
|
|
|
/* ##F#===================================================================================
|
|
NAME : Mmg_fn_v_UpdateLastErrorWithModuleIdAnducModeReference
|
|
DESCRIPTION : raise an error using module id and allocation mode
|
|
INPUT : Module Id
|
|
Allocation Mode
|
|
Error to raise
|
|
Message to display
|
|
=========================================================================================
|
|
CREATION : 06-11-97/Pierrick Crepy
|
|
=======================================================================================*/
|
|
extern CPA_EXPORT void Mmg_fn_v_UpdateLastErrorWithModuleIdAnducModeReference(unsigned char ucModuleId, unsigned char ucMode, unsigned short uwMyErr, char *szPersonalTxt);
|
|
|
|
extern CPA_EXPORT void Mmg_fn_v_UpdateLastErrorWithCallingRefAndCurrentModeInfo(unsigned short uwMyErr, char *szThePersonalTxt, unsigned char ucChannel);
|
|
#endif /*__ERROR_STRINGS__*/
|
|
|
|
|
|
/*/////////////////////////////////////////////////////////*/
|
|
/* FQ OVR*/
|
|
/*/////////////////////////////////////////////////////////*/
|
|
/**/
|
|
/* Using unused code to malloc in :-)*/
|
|
/**/
|
|
/*/////////////////////////////////////////////////////////*/
|
|
|
|
#ifdef U64
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by XB */
|
|
void MMG_fn_vReinit_FreeMemoryBlocks(void);
|
|
void MMG_fn_vAddFreeMemoryBlock(void *StartingAddress, unsigned int uiSize);
|
|
void *MMG_fn_p_vMallocInHoles(unsigned int uiSize); /* YOU MUST TEST FOR NULL RETURN !!*/
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by XB */
|
|
#endif /* U64*/
|
|
|
|
/* END FQ OVR*/
|
|
/*/////////////////////////////////////////////////////////*/
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
};
|
|
#endif /* __cplusplus */
|
|
|
|
#endif /*__CpaMmg_H__*/
|