Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

PsnMemoryElementDescriptor Class Reference

Describe a block of free memory. More...

#include <PsnMemoryElementDescriptor.h>

List of all members.

Public Methods

 PsnMemoryElementDescriptor ()
 Constructeur vide.

 PsnMemoryElementDescriptor (const PsnMemoryElementDescriptor &)
 Constructeur par recopie.

bool inAdressSpace (unsigned int ptr) const
 is an adress contained in the described memory block

void * operator new (size_t size, PsnMemoryManager *memoryManager)
 redefining new for allocation in a myMemoryManager

void * operator new (size_t size, PsnSharedMemoryManager *memoryManager=0)
 redefining new for allocation in a shared memory manager (avoid remembering size)

void * operator new (size_t size, void *here)
 redefining new for allocation in a free space

void operator delete (void *, size_t)
 redefining delete to release use freed a a release buffer for rapid reallocation


Public Attributes

unsigned int base
 La base, en relatif dans la mémoire.

unsigned int size
 size of the memory element described

unsigned int next
 l'adresse, dans la mémoire gérée par myMemoryManager, du prochain descripteur d'élément de mémoire


Detailed Description

Describe a block of free memory.

Version:
1.9
Author:
originally a struct by Renaud Lottiaux adapted for member functions by David Margery

Definition at line 33 of file PsnMemoryElementDescriptor.h.


Constructor & Destructor Documentation

PsnMemoryElementDescriptor::PsnMemoryElementDescriptor  
 

Constructeur vide.

Definition at line 30 of file PsnMemoryElementDescriptor.cxx.

00031 {
00032    //cerr<<"PsnMemoryElementDescriptor::PsnMemoryElementDescriptor : constructeur vide"<<endl;
00033 }

PsnMemoryElementDescriptor::PsnMemoryElementDescriptor const PsnMemoryElementDescriptor &   
 

Constructeur par recopie.

Definition at line 35 of file PsnMemoryElementDescriptor.cxx.

00035                                                                                                   :
00036    base(original.base),
00037    size(original.size),
00038    next(original.next)
00039 {
00040 
00041 }


Member Function Documentation

bool PsnMemoryElementDescriptor::inAdressSpace unsigned int    ptr const [inline]
 

is an adress contained in the described memory block

Definition at line 48 of file PsnMemoryElementDescriptor.h.

References base, and size.

Referenced by PsnThreadMemoryManager::inAdressSpace(), and PsnDescriptorMemoryManager::inAdressSpace().

00049    {
00050       return ( (base <= ptr) && ( ptr < base + size ) ) ;
00051    }

void PsnMemoryElementDescriptor::operator delete void *   ,
size_t   
 

redefining delete to release use freed a a release buffer for rapid reallocation

Definition at line 78 of file PsnMemoryElementDescriptor.cxx.

References PsnMemoryManager::freeSizeRemembered(), HeapStackTop::globalMemoryManagerKey, PsnSharedMemoryManager::lockIfNeeded(), PsnSharedMemoryManager::mfree(), size, and PsnSharedMemoryManager::unlockIfNeeded().

00079 {
00080 #ifdef _DEBUGMEMORYMANAGEMENT
00081    cerr<<"PsnMemoryElementDescriptor::operator delete"<<endl;
00082 #endif
00083    
00084    PsnMemoryManager * freeFrom = (PsnMemoryManager *) (pthread_getspecific( HeapStackTop::globalMemoryManagerKey ) );
00085    
00086 #ifdef _DEBUGMEMORYMANAGEMENT
00087    assert ( freeFrom != NULL ) ;
00088 #endif
00089 
00090    PsnSharedMemoryManager * freeFromShared = dynamic_cast<PsnSharedMemoryManager *> (freeFrom) ;
00091 
00092    if ( freeFromShared != NULL )
00093       {
00094 #ifdef _MOME
00095          assert(dynamic_cast<PsnRelaxedMemoryManager *>(freeFrom) == NULL) ;
00096 #endif   
00097          freeFromShared->lockIfNeeded();
00098          
00099          freeFromShared->mfree( addr , size ) ;
00100          
00101          freeFromShared->unlockIfNeeded();
00102       }
00103    else
00104       {
00105          freeFrom->freeSizeRemembered ( addr ) ;
00106       }
00107 #ifdef _DEBUGALLOCATIONMOME
00108    cerr<<"PsnMemoryElementDescriptor::operator delete done"<<endl;
00109 #endif
00110 }

void * PsnMemoryElementDescriptor::operator new size_t    size,
void *    here
 

redefining new for allocation in a free space

Definition at line 44 of file PsnMemoryElementDescriptor.cxx.

00044                                                                           {
00045    return here ;
00046 }

void * PsnMemoryElementDescriptor::operator new size_t    size,
PsnSharedMemoryManager   memoryManager = 0
 

redefining new for allocation in a shared memory manager (avoid remembering size)

we suppose here that a lock has been acquired for the memory manager

Definition at line 60 of file PsnMemoryElementDescriptor.cxx.

References PsnSystemMemoryManager::allocateSizeRemembered(), HeapStackTop::getSystemMemoryManager(), PsnSharedMemoryManager::mmalloc(), and size.

00061 {
00063    if (memoryManager != 0) 
00064       {
00065 #ifdef _MOME
00066          assert(dynamic_cast<PsnRelaxedMemoryManager *>(memoryManager) == NULL) ;
00067 #endif
00068          return memoryManager->mmalloc(size);
00069       }
00070    else 
00071       {
00072          return HeapStackTop::getSystemMemoryManager()->allocateSizeRemembered (size)  ;
00073       }
00074 }

void * PsnMemoryElementDescriptor::operator new size_t    size,
PsnMemoryManager   memoryManager
 

redefining new for allocation in a myMemoryManager

Definition at line 50 of file PsnMemoryElementDescriptor.cxx.

References PsnMemoryManager::allocateSizeRemembered(), and size.

00051 {
00052    assert ( memoryManager != NULL) ;
00053    assert ( dynamic_cast<PsnSharedMemoryManager *> (memoryManager) == NULL ) ;
00054 
00055    return memoryManager->allocateSizeRemembered (size) ;
00056 }


Member Data Documentation

unsigned int PsnMemoryElementDescriptor::base
 

La base, en relatif dans la mémoire.

Definition at line 41 of file PsnMemoryElementDescriptor.h.

Referenced by PsnThreadMemoryManager::addInFree(), PsnSecondarySharedMemoryManager::addInThisFree(), PsnThreadMemoryManager::allocateSizeRemembered(), PsnDescriptorMemoryManager::allocateSizeRemembered(), PsnThreadMemoryManager::getFromFree(), PsnSecondarySharedMemoryManager::getFromThisFree(), inAdressSpace(), PsnDescriptorMemoryManager::PsnDescriptorMemoryManager(), PsnSharedArrayMemoryManager::PsnSharedArrayMemoryManager(), PsnSharedFreeStoreMemoryManager::PsnSharedFreeStoreMemoryManager(), and PsnThreadMemoryManager::PsnThreadMemoryManager().

unsigned int PsnMemoryElementDescriptor::next
 

l'adresse, dans la mémoire gérée par myMemoryManager, du prochain descripteur d'élément de mémoire

Definition at line 45 of file PsnMemoryElementDescriptor.h.

Referenced by PsnThreadMemoryManager::addInFree(), PsnSecondarySharedMemoryManager::addInThisFree(), PsnThreadMemoryManager::allocateSizeRemembered(), PsnDescriptorMemoryManager::allocateSizeRemembered(), PsnThreadMemoryManager::getFromFree(), PsnSecondarySharedMemoryManager::getFromThisFree(), PsnThreadMemoryManager::inAdressSpace(), PsnDescriptorMemoryManager::inAdressSpace(), PsnDescriptorMemoryManager::PsnDescriptorMemoryManager(), PsnSharedArrayMemoryManager::PsnSharedArrayMemoryManager(), PsnSharedFreeStoreMemoryManager::PsnSharedFreeStoreMemoryManager(), and PsnThreadMemoryManager::PsnThreadMemoryManager().

unsigned int PsnMemoryElementDescriptor::size
 

size of the memory element described

Definition at line 43 of file PsnMemoryElementDescriptor.h.

Referenced by PsnThreadMemoryManager::addInFree(), PsnSecondarySharedMemoryManager::addInThisFree(), PsnThreadMemoryManager::allocateSizeRemembered(), PsnDescriptorMemoryManager::allocateSizeRemembered(), PsnThreadMemoryManager::getFromFree(), PsnSecondarySharedMemoryManager::getFromThisFree(), inAdressSpace(), operator delete(), operator new(), PsnDescriptorMemoryManager::PsnDescriptorMemoryManager(), PsnSharedArrayMemoryManager::PsnSharedArrayMemoryManager(), PsnSharedFreeStoreMemoryManager::PsnSharedFreeStoreMemoryManager(), PsnThreadMemoryManager::PsnThreadMemoryManager(), and PsnSharedArrayMemoryManager::~PsnSharedArrayMemoryManager().


The documentation for this class was generated from the following files:
logo OpenMask

Documentation generated on Mon Nov 25 15:26:08 2002

Generated with doxygen 1.2.12 by Dimitri van Heesch ,   1997-2001