00001 /* 00002 * This file is part of openMask © INRIA, CNRS, Universite de Rennes 1 1993-2002, thereinafter the Software 00003 * 00004 * The Software has been developped within the Siames Project. 00005 * INRIA, the University of Rennes 1 and CNRS jointly hold intellectual property rights 00006 * 00007 * The Software has been registered with the Agence pour la Protection des 00008 * Programmes (APP) under registration number IDDN.FR.001.510008.00.S.P.2001.000.41200 00009 * 00010 * This file may be distributed under the terms of the Q Public License 00011 * version 1.0 as defined by Trolltech AS of Norway and appearing in the file 00012 * LICENSE.QPL included in the packaging of this file. 00013 * 00014 * Licensees holding valid specific licenses issued by INRIA, CNRS or Université de Rennes 1 00015 * for the software may use this file in accordance with that specific license 00016 * 00017 */ 00018 #include "PsnFramedMemoryManager.h" 00019 00020 #include "PsnRelaxedMemoryManager.h" 00021 00022 PsnFramedMemoryManager::PsnFramedMemoryManager(size_t sizeDsm, size_t pageSize, size_t alignedSize, PsnRelaxedMemoryManager & memoryManager, int queueSize ) : 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 } 00037 00038 PsnFramedMemoryManager::~PsnFramedMemoryManager() { 00039 00040 } 00041 00042 void PsnFramedMemoryManager::sync() { 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 } 00068 00069 void PsnFramedMemoryManager::addPageInSync(int pageNumber, int whenToSync) { 00070 #ifdef _DEBUGALLOCATIONMOME 00071 cerr<<"PsnFramedMemoryManager::"<<this<<"::addPageInSync( "<<pageNumber<<","<<whenToSync<<" )"<<endl; 00072 #endif 00073 _listToBeMarkedSynced.insert ( pair<int,int>(pageNumber , whenToSync) ) ; 00074 } 00075 00076 00077 void PsnFramedMemoryManager::removePageFromSync (int pageNumber, int whenToSync) { 00078 _listToBeMarkedSynced.erase ( pair<int,int>(pageNumber , whenToSync) ) ; 00079 } 00080 00081 00082 00083 void PsnFramedMemoryManager::addBlockInSync (int blockNumber) { 00084 int nbPagesByBlock = _blockSize / _pageSize ; 00085 for (int i=(1 + blockNumber) * nbPagesByBlock - 1 ; i >= blockNumber * nbPagesByBlock ; i-- ) { 00086 addPageInSync( i , blockNumber) ; 00087 } 00088 } 00089 00090 void PsnFramedMemoryManager::removeBlockFromSync (int blockNumber) { 00091 int nbPagesByBlock = _blockSize / _pageSize ; 00092 for (int i=(1 + blockNumber) * nbPagesByBlock - 1 ; i >= blockNumber * nbPagesByBlock ; i-- ) { 00093 removePageFromSync( i , blockNumber) ; 00094 } 00095 } 00096 00097 void * PsnFramedMemoryManager::getFromFree ( size_t size ) { 00098 cerr<<" PsnFramedMemoryManager::getFromFree "<<endl ; 00099 return NULL ; 00100 } 00101 00102 void PsnFramedMemoryManager::addInFree ( void * ptr, size_t size) { 00103 cerr<<" PsnFramedMemoryManager::addInFre "<<endl ; 00104 00105 }
| Documentation generated on Mon Nov 25 15:25:00 2002 |
Generated with doxygen 1.2.12 by Dimitri van Heesch , 1997-2001 |