#include <PsnFramedMemoryManager.h>
Inheritance diagram for PsnFramedMemoryManager:


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 | |
Framed memory managers have all their data localy allocated. Acess to them doesn't need protection unless the process is multithreaded.
Definition at line 38 of file PsnFramedMemoryManager.h.
|
||||||||||||||||||||||||
|
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 } |
|
|
Desctructeur.
Definition at line 38 of file PsnFramedMemoryManager.cxx.
00038 {
00039
00040 }
|
|
|
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 }
|
|
||||||||||||
|
la zone de mémoire dans lesquels sont stockés les PsnMemoryElementDescriptor doit être vérouillée avant l'appel à cette fonction
Implements PsnSharedMemoryManager. Definition at line 102 of file PsnFramedMemoryManager.cxx.
00102 {
00103 cerr<<" PsnFramedMemoryManager::addInFre "<<endl ;
00104
00105 }
|
|
||||||||||||
|
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 }
|
|
|
la zone de mémoire dans lesquels sont stockés les PsnMemoryElementDescriptor doit être vérouillée avant l'appel à cette fonction
Implements PsnSharedMemoryManager. Definition at line 97 of file PsnFramedMemoryManager.cxx.
00097 {
00098 cerr<<" PsnFramedMemoryManager::getFromFree "<<endl ;
00099 return NULL ;
00100 }
|
|
|
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 }
|
|
||||||||||||
|
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 }
|
|
|
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 }
|
|
|
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(). |
|
|
Definition at line 56 of file PsnFramedMemoryManager.h. Referenced by PsnSharedFreeStoreMemoryManager::mallocAvecMemoire(), PsnSharedFreeStoreMemoryManager::mmalloc(), and sync(). |
|
|
the list of pages to be newly synced
Definition at line 76 of file PsnFramedMemoryManager.h. Referenced by addPageInSync(), removePageFromSync(), and sync(). |
|
|
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(). |
| Documentation generated on Mon Nov 25 15:26:00 2002 |
Generated with doxygen 1.2.12 by Dimitri van Heesch , 1997-2001 |