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

PsnFramedMemoryManager Class Reference

A secondary shared memory manager with awareness of the scheduling frames. More...

#include <PsnFramedMemoryManager.h>

Inheritance diagram for PsnFramedMemoryManager:

Inheritance graph
[legend]
Collaboration diagram for PsnFramedMemoryManager:

Collaboration graph
[legend]
List of all members.

Public Methods

 PsnFramedMemoryManager (size_t sizeDsm, size_t pageSize, size_t alignedSize, PsnRelaxedMemoryManager &memoryManager, int queueSize)
 Constructeur.

virtual ~PsnFramedMemoryManager ()
 Desctructeur.

virtual void sync ()
 Synchronise the memory managed by the PsnFramedMemoryManager :.


Protected Methods

void addBlockInSync (int blockNumber)
void removeBlockFromSync (int blockNumber)
virtual void addPageInSync (int pageNumber, int whenSynced)
 add pageNumber in the list of pages to be marked as synced at whenSynced

virtual void removePageFromSync (int pageNumber, int whenSynced)
 remove pageNumber from the list of pages to be marked as synced at whenSynced

virtual void * getFromFree (size_t size)
 la zone de mémoire dans lesquels sont stockés les PsnMemoryElementDescriptor doit être vérouillée avant l'appel à cette fonction

virtual void addInFree (void *ptr, size_t size)
 la zone de mémoire dans lesquels sont stockés les PsnMemoryElementDescriptor doit être vérouillée avant l'appel à cette fonction


Protected Attributes

int _currentWritableIndex
int _queueSize
 the expected periodicy of the frame memory manager

set< pair< int, int > > _listToBeMarkedSynced
 the list of pages to be newly synced

size_t _blockSize
 size of a block : a bloc spawns a number of pages and is the basic memory size in which memory is allocated


Detailed Description

A secondary shared memory manager with awareness of the scheduling frames.

Framed memory managers have all their data localy allocated. Acess to them doesn't need protection unless the process is multithreaded.

Author:
David Margery
Version:
0.9

Definition at line 38 of file PsnFramedMemoryManager.h.


Constructor & Destructor Documentation

PsnFramedMemoryManager::PsnFramedMemoryManager size_t    sizeDsm,
size_t    pageSize,
size_t    alignedSize,
PsnRelaxedMemoryManager   memoryManager,
int    queueSize
 

Constructeur.

Definition at line 22 of file PsnFramedMemoryManager.cxx.

References _blockSize, _queueSize, and PsnSharedMemoryManager::pageSize().

00022                                                                                                                                                            :
00023    PsnSecondarySharedMemoryManager(sizeDsm,
00024                                    pageSize,
00025                                    alignedSize,
00026                                    memoryManager),
00027    _queueSize(queueSize),
00028    _currentWritableIndex(memoryManager.getWritableQueueIndex())
00029 {
00030    assert(sizeDsm % (_queueSize * pageSize) == 0) ;
00031 
00032    int nbPagesByBlock = sizeDsm / (_queueSize * pageSize) ;
00033 
00034    _blockSize = nbPagesByBlock * pageSize ;
00035 
00036 }

PsnFramedMemoryManager::~PsnFramedMemoryManager   [virtual]
 

Desctructeur.

Definition at line 38 of file PsnFramedMemoryManager.cxx.

00038                                                 {
00039 
00040 }


Member Function Documentation

void PsnFramedMemoryManager::addBlockInSync int    blockNumber [protected]
 

Definition at line 83 of file PsnFramedMemoryManager.cxx.

References _blockSize, PsnSharedMemoryManager::_pageSize, and addPageInSync().

Referenced by PsnSharedFreeStoreMemoryManager::mmalloc(), and PsnSharedArrayMemoryManager::PsnSharedArrayMemoryManager().

00083                                                             {
00084    int nbPagesByBlock = _blockSize /  _pageSize ;
00085    for (int i=(1 + blockNumber) * nbPagesByBlock - 1 ; i >= blockNumber * nbPagesByBlock ; i-- ) {
00086       addPageInSync( i , blockNumber) ;
00087    }
00088 }

void PsnFramedMemoryManager::addInFree void *    ptr,
size_t    size
[protected, virtual]
 

la zone de mémoire dans lesquels sont stockés les PsnMemoryElementDescriptor doit être vérouillée avant l'appel à cette fonction

Parameters:
addr : address of the memory to be freed
size : size asked for when memory was allocated

Implements PsnSharedMemoryManager.

Definition at line 102 of file PsnFramedMemoryManager.cxx.

00102                                                                 {
00103    cerr<<" PsnFramedMemoryManager::addInFre "<<endl ;
00104    
00105 }

void PsnFramedMemoryManager::addPageInSync int    pageNumber,
int    whenSynced
[protected, virtual]
 

add pageNumber in the list of pages to be marked as synced at whenSynced

Definition at line 69 of file PsnFramedMemoryManager.cxx.

References _listToBeMarkedSynced, and set< pair< int, int > >::insert().

Referenced by addBlockInSync().

00069                                                                          {
00070 #ifdef _DEBUGALLOCATIONMOME
00071    cerr<<"PsnFramedMemoryManager::"<<this<<"::addPageInSync( "<<pageNumber<<","<<whenToSync<<" )"<<endl;
00072 #endif 
00073    _listToBeMarkedSynced.insert ( pair<int,int>(pageNumber , whenToSync) ) ;
00074 }

void * PsnFramedMemoryManager::getFromFree size_t    size [protected, virtual]
 

la zone de mémoire dans lesquels sont stockés les PsnMemoryElementDescriptor doit être vérouillée avant l'appel à cette fonction

Parameters:
size : size of memory to allocate
Returns:
: address of a memory zone of at least size.

Implements PsnSharedMemoryManager.

Definition at line 97 of file PsnFramedMemoryManager.cxx.

00097                                                          {
00098    cerr<<" PsnFramedMemoryManager::getFromFree "<<endl ;
00099    return NULL ;
00100 }

void PsnFramedMemoryManager::removeBlockFromSync int    blockNumber [protected]
 

Definition at line 90 of file PsnFramedMemoryManager.cxx.

References _blockSize, PsnSharedMemoryManager::_pageSize, and removePageFromSync().

Referenced by PsnSharedFreeStoreMemoryManager::mfree().

00090                                                                  {
00091    int nbPagesByBlock = _blockSize /  _pageSize ;
00092    for (int i=(1 + blockNumber) * nbPagesByBlock - 1 ; i >= blockNumber * nbPagesByBlock ; i-- ) {
00093       removePageFromSync( i , blockNumber) ;
00094    }
00095 }

void PsnFramedMemoryManager::removePageFromSync int    pageNumber,
int    whenSynced
[protected, virtual]
 

remove pageNumber from the list of pages to be marked as synced at whenSynced

Definition at line 77 of file PsnFramedMemoryManager.cxx.

References _listToBeMarkedSynced, and set< pair< int, int > >::erase().

Referenced by removeBlockFromSync().

00077                                                                                {
00078    _listToBeMarkedSynced.erase ( pair<int,int>(pageNumber , whenToSync) ) ;
00079 }

void PsnFramedMemoryManager::sync   [virtual]
 

Synchronise the memory managed by the PsnFramedMemoryManager :.

Implements PsnSecondarySharedMemoryManager.

Definition at line 42 of file PsnFramedMemoryManager.cxx.

References _currentWritableIndex, PsnSecondarySharedMemoryManager::_firstPageOffset, _listToBeMarkedSynced, PsnSecondarySharedMemoryManager::_myMemoryManager, PsnRelaxedMemoryManager::_whenSynced, set< pair< int, int > >::begin(), set< pair< int, int > >::clear(), set< pair< int, int > >::end(), and PsnRelaxedMemoryManager::getWritableQueueIndex().

00042                                   {
00043 #ifdef _DEBUGSYNC
00044    cerr<<"PsnFramedMemoryManager::sync()"<<_firstPageOffset<<endl;
00045 #endif
00046    for (set<pair<int,int> >::const_iterator i=_listToBeMarkedSynced.begin() ;
00047         i != _listToBeMarkedSynced.end() ;
00048         i++ )
00049       {
00050 #ifdef _DEBUGSYNC
00051          cerr<<"Dans boucle, "<<(*i).first + _firstPageOffset<<" "<<(*i).second<<endl;
00052          cerr<<_myMemoryManager._whenSynced<<endl;
00053 #endif
00054          _myMemoryManager._whenSynced [ (*i).first + _firstPageOffset ] = (*i).second ;
00055 #ifdef _DEBUGSYNC
00056          cerr<<"Page "<<(*i).first + _firstPageOffset<<" synced at "<<_myMemoryManager._whenSynced [ (*i).first + _firstPageOffset ]<<endl;endl;
00057 #endif
00058       }
00059 
00060    _listToBeMarkedSynced.clear() ; 
00061 
00062    _currentWritableIndex = _myMemoryManager.getWritableQueueIndex() ;
00063 
00064 #ifdef _DEBUGSYNC
00065    cerr<<"PsnFramedMemoryManager::sync() done"<<endl;
00066 #endif
00067 }


Member Data Documentation

size_t PsnFramedMemoryManager::_blockSize [protected]
 

size of a block : a bloc spawns a number of pages and is the basic memory size in which memory is allocated

Definition at line 79 of file PsnFramedMemoryManager.h.

Referenced by addBlockInSync(), PsnSharedFreeStoreMemoryManager::mfree(), PsnSharedFreeStoreMemoryManager::mmalloc(), PsnFramedMemoryManager(), PsnSharedArrayMemoryManager::PsnSharedArrayMemoryManager(), PsnSharedFreeStoreMemoryManager::PsnSharedFreeStoreMemoryManager(), removeBlockFromSync(), PsnSharedArrayMemoryManager::~PsnSharedArrayMemoryManager(), and PsnSharedFreeStoreMemoryManager::~PsnSharedFreeStoreMemoryManager().

int PsnFramedMemoryManager::_currentWritableIndex [protected]
 

Definition at line 56 of file PsnFramedMemoryManager.h.

Referenced by PsnSharedFreeStoreMemoryManager::mallocAvecMemoire(), PsnSharedFreeStoreMemoryManager::mmalloc(), and sync().

set<pair<int,int> > PsnFramedMemoryManager::_listToBeMarkedSynced [protected]
 

the list of pages to be newly synced

Definition at line 76 of file PsnFramedMemoryManager.h.

Referenced by addPageInSync(), removePageFromSync(), and sync().

int PsnFramedMemoryManager::_queueSize [protected]
 

the expected periodicy of the frame memory manager

Definition at line 59 of file PsnFramedMemoryManager.h.

Referenced by PsnSharedFreeStoreMemoryManager::mfree(), PsnFramedMemoryManager(), PsnSharedArrayMemoryManager::PsnSharedArrayMemoryManager(), PsnSharedFreeStoreMemoryManager::PsnSharedFreeStoreMemoryManager(), and PsnSharedFreeStoreMemoryManager::~PsnSharedFreeStoreMemoryManager().


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

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

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