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

PsnFramedMemoryManager.cxx

Go to the documentation of this file.
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 }

logo OpenMask

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

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