diff options
Diffstat (limited to 'src/temp/mem')
-rw-r--r-- | src/temp/mem/mem.c | 32 | ||||
-rw-r--r-- | src/temp/mem/mem.h | 1 |
2 files changed, 31 insertions, 2 deletions
diff --git a/src/temp/mem/mem.c b/src/temp/mem/mem.c index 26d6485d..15199755 100644 --- a/src/temp/mem/mem.c +++ b/src/temp/mem/mem.c @@ -302,7 +302,7 @@ Mem_Flex_t * Mem_FlexStart() p->pCurrent = NULL; p->pEnd = NULL; - p->nChunkSize = (1 << 12); + p->nChunkSize = (1 << 14); p->nChunksAlloc = 64; p->nChunks = 0; p->pChunks = ALLOC( char *, p->nChunksAlloc ); @@ -390,6 +390,34 @@ char * Mem_FlexEntryFetch( Mem_Flex_t * p, int nBytes ) Synopsis [] + Description [Relocates all the memory except the first chunk.] + + SideEffects [] + + SeeAlso [] + +***********************************************************************/ +void Mem_FlexRestart( Mem_Flex_t * p ) +{ + int i; + if ( p->nChunks == 0 ) + return; + // deallocate all chunks except the first one + for ( i = 1; i < p->nChunks; i++ ) + free( p->pChunks[i] ); + p->nChunks = 1; + p->nMemoryAlloc = p->nChunkSize; + // transform these entries into a linked list + p->pCurrent = p->pChunks[0]; + p->pEnd = p->pCurrent + p->nChunkSize; + p->nEntriesUsed = 0; + p->nMemoryUsed = 0; +} + +/**Function************************************************************* + + Synopsis [] + Description [] SideEffects [] @@ -399,7 +427,7 @@ char * Mem_FlexEntryFetch( Mem_Flex_t * p, int nBytes ) ***********************************************************************/ int Mem_FlexReadMemUsage( Mem_Flex_t * p ) { - return p->nMemoryAlloc; + return p->nMemoryUsed; } diff --git a/src/temp/mem/mem.h b/src/temp/mem/mem.h index 21296d99..611c968d 100644 --- a/src/temp/mem/mem.h +++ b/src/temp/mem/mem.h @@ -49,6 +49,7 @@ extern int Mem_FixedReadMemUsage( Mem_Fixed_t * p ); extern Mem_Flex_t * Mem_FlexStart(); extern void Mem_FlexStop( Mem_Flex_t * p, int fVerbose ); extern char * Mem_FlexEntryFetch( Mem_Flex_t * p, int nBytes ); +extern void Mem_FlexRestart( Mem_Flex_t * p ); extern int Mem_FlexReadMemUsage( Mem_Flex_t * p ); // hierarchical memory manager extern Mem_Step_t * Mem_StepStart( int nSteps ); |