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

PsMomeController Class Reference

A controller over a DSM (named Mome). More...

#include <PsMomeController.h>

Inheritance diagram for PsMomeController:

Inheritance graph
[legend]
Collaboration diagram for PsMomeController:

Collaboration graph
[legend]
List of all members.

Public Methods

 PsMomeController (PsObjectDescriptor &initialObjects, const PsDate &initialDate)
 Le constructeur.

virtual ~PsMomeController ()
 Le destructeur.

virtual void init ()
 Redéfinition pour gérer les initialisations manquées à cause de la distribution.

virtual void prepareEventProcessing (list< PsEvent * > &myList)
 Redefined so as to collect event received by the BroadcastManager {PsnBroadcastManager}.

virtual void computeNextSimulationStep ()
 Redéfinition pour intégrer la synchronisation de la mémoire, l'extraction des outputs pour la propagation des signaux etc et la synchronisation avec le {PsnBroacastManager}.

virtual void actOnSystemEvent (PsEvent *evt)
 Redéfinition pour diffuser les événements système aux controleurs grace au {PsnBroacastManager}.

virtual PsnOutputSharedDatacreerDonneesOutput (const PsName &object, const PsName &name)
 Création des données d'une output.

virtual void invalidateOutput (const PsName &object, const PsName &name)
 A utiliser avec précaution (les multiples références ne sont pas gérées par cette version de la méthode) lors de la destruction d'une output.

virtual PsnMirrorObjectHandlenewPsnMirrorObjectHandle (PsSimulatedObject &)
 Redefinition to create a {PsnMomeMirrorObjectHandle}.

virtual PsnReferenceObjectHandlenewPsnReferenceObjectHandle (PsSimulatedObject &object, PsController &controller, PsnSignalDispatcher *signalDispatcher)
 Redefinition to create a {PsnMomeReferenceObjectHandle}.

virtual void syncAttributesAndEvents (void)
 Synchroniser toutes les outputs, tous les paramètres de controle, tous les messages et tous les événements.

virtual void createControlledObjects (const PsObjectDescriptor *subTree)
 redéfinition de createControlledObjects pour installer le gestionnaire de mémoire à cohérance relachée

virtual int getOutputHistorySize (void)
 Recuperation de la taille de la file pour une output nécessaire pour le controleur.

virtual void broadcast (const PsName &nomDestinataire, const PsString &message)
 redefinition de la méthode de broadcast


Static Public Methods

PsnSharedMemoryManagerwhichSharedMemoryManager (void *ptr)
 Déterminer le gestionnaire de mémoire utilisé pour une adresse donnée.

void errorMome ()
 Une méthode pour gérer les errors.

void SigSegvExceptionThrower (void *)
 Une methode static pour rattrapper les SIGSEGV.


Static Public Attributes

PsnSharedMemoryManagerSTLSharedMemoryManager = NULL
 pointeur sur le gestionnaire de mémoire pour la partie STL partagée avec cohérance forte

PsnRelaxedMemoryManageroutputDataSharedMemoryManager = NULL
 pointeur sur le gestionnaire de mémoire pour les données associées aux outputs

PsnCoherantMemoryManagercontrolersDataSharedMemoryManager = NULL
 pointeur sur les gestionnaire de memoire gérant les données partagées entre les controleurs


Protected Attributes

int numSegCoherenceForte
 Le numero de segment géré par cohérance forte.

size_t _tailleAlloueParSegment
 taille des deux zones de mémoire gérées par Mome

int * _zoneCoherenceForte
 Pointeur sur la zone de mémoire dans laquelle est mappé le segment géré par cohérance forte.

PsnOutputOffsetTablemyOutputOffsetTable
 La table de correspondance entre une output et son offset dans la mémoire partagée.

PsnUniqueCreator_sharedObjectFactory
 L'usine à fabriquer des objets partagés.

PsNameServerancServeur
 L'ancien serveur de nom.

PsnBroadcastManager_myBroadcastManager
 le gestionnaire de communication avec les autres controleurs


Static Protected Attributes

PsnCoherantMemoryManagerstrictMemoryManager = NULL
 pointeur sur le gestionnaire de mémoire à cohérance forte.

PsnRelaxedMemoryManagerweakMemoryManager = NULL
 pointeur sur le gestionnaire de mémoire à cohérance relachée.

char * nomExecutable = "none"
 nom de l'executable, chemin complet compris


Detailed Description

A controller over a DSM (named Mome).

Author:
David.Margery
Version:
1.0 : doesn't completly implement openMask's conseptual model

Definition at line 36 of file PsMomeController.h.


Constructor & Destructor Documentation

PsMomeController::PsMomeController PsObjectDescriptor   initialObjects,
const PsDate   initialDate
 

Le constructeur.

Le constructeur du processus de numero 0 dans la Mome doit être appellé avant les autres

Definition at line 51 of file PsMomeController.cxx.

References _myBroadcastManager, _sharedObjectFactory, _tailleAlloueParSegment, _zoneCoherenceForte, controlersDataSharedMemoryManager, PsObjectDescriptor::getName(), PsName::getNameServer(), PsSimulatedObject::getObjectDescriptor(), myOutputOffsetTable, PsnUniqueCreator::newPsNameServer(), PsnUniqueCreator::newPsnOutputOffsetTable(), nomExecutable, PsDate, PsName::setNameServer(), STLSharedMemoryManager, and strictMemoryManager.

00051                                                                                                   : 
00052    PsDistributedController(initialObjects, initialDate) 
00053 {
00054 #ifdef _MOME
00055    chdir(g_dirname(nomExecutable));
00056    cout<<"I am controler "<<MomeMe<<"(named "<<getObjectDescriptor().getName()<<") of "<<MomeNumberOfProcessors<<" of thread "<<pthread_self()<<endl;
00057    _tailleAlloueParSegment = 4*1024*MomePageSize;
00058    int numSeg = MomeAllocateSharedSegment(2*_tailleAlloueParSegment);
00059    //cout<<"Me suis alloué un segment partagé"<<endl;
00060    void * zone = memalign(4096,2*_tailleAlloueParSegment);
00061    //cout<<"Me suis alloué la mémoire correspondante"<<endl;
00062    void * buffer = MomeMapMemory(zone,2*_tailleAlloueParSegment,MomeWrite,MAP_FIXED,numSeg,0);
00063 
00064    _zoneCoherenceForte = (int *) buffer ;
00065 
00066    if (MomeMe!=0) {
00067       MomeBarrier();
00068       cerr<<"passage de la barrière****************************************"<<endl;
00069    }
00070 
00071    cerr<<"gestion des adresses depuis "<<buffer<<" et jusqu'à "<<(void *)((unsigned int)buffer+2*_tailleAlloueParSegment)<<endl;
00072    //sleep(3);
00073 
00074    strictMemoryManager = new PsnCoherantMemoryManager(buffer,_tailleAlloueParSegment, MomePageSize );
00075 
00076    cerr<<"Mémoire cohérante crée"<<endl;
00077 
00078    STLSharedMemoryManager = strictMemoryManager;
00079    controlersDataSharedMemoryManager = strictMemoryManager;
00080 
00081    cerr<<"Initialisation des données partagées"<<endl;
00082    _sharedObjectFactory = new PsnUniqueCreator(controlersDataSharedMemoryManager);
00083 
00084    //si MomeMe == 0, on sait qu'on est déjà en exclusion 
00085    cerr<<"Unique creator créé "<<endl;
00086 
00087    /* on initialise le gestionnaire de broadcast avant le gestionnaire de noms pour obtenir un bon verrou */
00088    cerr<<"initialisation du broadcastManager"<<endl;
00089    
00090    _myBroadcastManager = new PsnBroadcastManager(*_sharedObjectFactory);
00091 
00092    //Feinte : rendu ici, sur tous les noeuds, le PsNameServer doit être le même, au niveau contenu
00093    //On le recopie donc dans un PsNameServer partagé, et on vérifie
00094    cerr<<"Nouveau serveur de nom a créer "<<endl;
00095 
00096    PsMomeNameServer * unAutreServeur = _sharedObjectFactory->newPsNameServer(MomeMe+1);
00097    PsNameServer * oldNameServer = PsName::getNameServer() ;
00098    cerr<<"nouveau serveur de nom créé"<<endl;
00099    PsName::setNameServer ( unAutreServeur ) ;   
00100    delete oldNameServer ;
00101 
00102 
00103    myOutputOffsetTable = _sharedObjectFactory->newPsnOutputOffsetTable();
00104 
00105    assert(myOutputOffsetTable != NULL ) ;
00106 
00107    if(MomeMe==0) {
00108       cerr<<"Arrivé à la barrière de fin d'initialisation"<<endl;
00109       MomeBarrier();
00110       cerr<<"Passage de la barrière****************************************"<<endl;
00111    }
00112    //gestion des SIGSEGV
00113    // MomeSIGSEGVHandler( & PsMomeController::SigSegvExceptionThrower );
00114 
00115 #endif
00116 }

PsMomeController::~PsMomeController   [virtual]
 

Le destructeur.

Le destructeur remet en place le contexte, notamment au niveau du serveur de noms Symbolique

Definition at line 118 of file PsMomeController.cxx.

References PsName::getNameServer(), PsClassicalNameServer, PsName::setNameServer(), and weakMemoryManager.

00118                                     {
00119 #ifdef _MOME
00120    cout<<"PsMomeController::~PsMomeController()"<<endl;
00121    PsClassicalNameServer * unAutreServeur = new PsClassicalNameServer(PsName::getNameServer()->getCanonicalRepresentation());
00122    PsNameServer * oldNameServer = PsName::getNameServer() ;
00123    PsName::setNameServer(unAutreServeur);
00124    MomeBarrier(); //tout le monde doit avoir sa copie du serveur de nom avant la destruction
00125    if (MomeMe==0) delete oldNameServer ;
00126    cout<<"destruction du Serveur de nom spécifique Mome"<<endl;
00127    destroyControlledObjects();
00128    cout<<"PsMomeController::~PsMomeController() Les objets controlés ont été détruits"<<endl;
00129    MomeBarrier() ;
00130    delete weakMemoryManager ;
00131    //if (MomeMe==0) delete myOutputOffsetTable;
00132    MomeFinalize(0);
00133 #endif
00134 }


Member Function Documentation

void PsMomeController::actOnSystemEvent PsEvent   evt [virtual]
 

Redéfinition pour diffuser les événements système aux controleurs grace au {PsnBroacastManager}.

Reimplemented from PsController.

Definition at line 309 of file PsMomeController.cxx.

References _myBroadcastManager, PsController::actOnSystemEvent(), PsnBroadcastManager::broadcastEvent(), PsEvent::clone(), controlersDataSharedMemoryManager, PsSimulatedObject::getName(), PsnSharedMemoryManager::globalAddressToLocal(), and PsEvent::receiver.

00309                                                        {
00310 #ifdef _MOME
00311 #ifdef _DEBUGEVT
00312    cerr<<"PsMomeController::actOnSystemEvent"<<evt<<endl;
00313 #endif
00314    if(evt->receiver == getName()) {//il faut diffuser l'évenement
00315       HeapStackTop toto(controlersDataSharedMemoryManager);
00316       _myBroadcastManager->broadcastEvent(controlersDataSharedMemoryManager->globalAddressToLocal(evt->clone()));
00317    }
00318    else {
00319       PsDistributedController::actOnSystemEvent ( evt ) ;
00320    }
00321 #else
00322    PsDistributedController::actOnSystemEvent ( evt ) ;
00323 #endif
00324 }

void PsMomeController::broadcast const PsName   nomDestinataire,
const PsString   message
[virtual]
 

redefinition de la méthode de broadcast

Definition at line 352 of file PsMomeController.cxx.

00352                                                                                           {
00353    assert (false) ; // non implementé
00354 }

void PsMomeController::computeNextSimulationStep   [virtual]
 

Redéfinition pour intégrer la synchronisation de la mémoire, l'extraction des outputs pour la propagation des signaux etc et la synchronisation avec le {PsnBroacastManager}.

Reimplemented from PsController.

Definition at line 255 of file PsMomeController.cxx.

References PsController::computeNextSimulationStep(), PsnRelaxedMemoryManager::sync(), and weakMemoryManager.

00255                                                  {
00256 #ifdef _MOME
00257 #ifdef _DEBUGEXEC
00258    cerr<<"PsMomeController::computeNextSimulationStep synchronisation de la mémoire "<<endl;
00259 #endif
00260    weakMemoryManager->sync();      
00261 #ifdef _DEBUGEXEC
00262    cerr<<"PsMomeController::computeNextSimulationStep synchronisation des messages et des événements "<<endl;
00263 #endif
00264       
00265 #ifdef _DEBUGEXEC
00266    cerr<<"PsMomeController::computeNextSimulationStep appel de la méthode ancêtre "<<endl;
00267 #endif
00268    PsDistributedController::computeNextSimulationStep();
00269 #ifdef _DEBUGEXEC
00270    cerr<<"PsMomeController::computeNextSimulationStep fait"<<endl; 
00271 #endif
00272 #endif
00273 }

void PsMomeController::createControlledObjects const PsObjectDescriptor   subTree [virtual]
 

redéfinition de createControlledObjects pour installer le gestionnaire de mémoire à cohérance relachée

Reimplemented from PsDistributedController.

Definition at line 335 of file PsMomeController.cxx.

References _sharedObjectFactory, _tailleAlloueParSegment, _zoneCoherenceForte, PsDistributedController::createControlledObjects(), getOutputHistorySize(), outputDataSharedMemoryManager, and weakMemoryManager.

00336 {
00337 #ifdef _MOME
00338    cerr<<"PsMomeController::createControlledObjects"<<endl;
00339    weakMemoryManager = new PsnRelaxedMemoryManager((int *)(((int)_zoneCoherenceForte)+_tailleAlloueParSegment),
00340                                                    _tailleAlloueParSegment, 
00341                                                    MomePageSize, 
00342                                                    _sharedObjectFactory,
00343                                                    getOutputHistorySize() );  
00344 
00345    outputDataSharedMemoryManager = weakMemoryManager;
00346   
00347    cerr<<"PsMomeController::createControlledObjects appel ancetre"<<endl;
00348    PsDistributedController::createControlledObjects( subTree ) ;
00349    cerr<<"PsMomeController::createControlledObjects fait"<<endl;
00350 #endif
00351 }

PsnOutputSharedData * PsMomeController::creerDonneesOutput const PsName   object,
const PsName   name
[virtual]
 

Création des données d'une output.

Cette méthode permet d'assuer que les données relatives à une output ne sont créées qu'un seule fois à travers le cluster de machine. Le premier appel crée effectivement les données, les suivants ne font que renvoyer des références sur les données créées au préalable.

Definition at line 180 of file PsMomeController.cxx.

References PsnOutputOffsetTable::declareOutput(), pair< T1, T2 >::first, PsnOutputOffsetTable::getOutputOffset(), PsnSharedMemoryManager::globalAddressToLocal(), PsnSharedMemoryManager::localAddressToGlobal(), PsnOutputOffsetTable::lock(), myOutputOffsetTable, outputDataSharedMemoryManager, pair< T1, T2 >::second, and PsnOutputOffsetTable::unlock().

Referenced by PsMomeOutput< Type >::PsMomeOutput().

00180                                                                                                       {
00181 #ifdef _MOME
00182    PsnOutputSharedData * res;
00183 #ifdef _DEBUGCREATIONOUTPUT
00184    cerr<<"on cherche "<<object<<","<<name<<endl;
00185 #endif
00186    pair<bool,unsigned int> present = myOutputOffsetTable->getOutputOffset(object,name);
00187    if (present.first) {
00188 #ifdef _DEBUGCREATIONOUTPUT
00189       cerr<<"on a retrouvé la output "<<object<<","<<name<<endl;
00190 #endif
00191       res = (PsnOutputSharedData * )outputDataSharedMemoryManager->localAddressToGlobal(present.second);
00192    }
00193    else {
00194       myOutputOffsetTable->lock();
00195 #ifdef _DEBUGCREATIONOUTPUT
00196       cerr<<"On va déclarer la output "<<object<<","<<name<<endl;
00197 #endif
00198       res = new PsnOutputSharedData();
00199 #ifdef _DEBUGCREATIONOUTPUT
00200       cerr<<"On a déclaré la structure de donnée"<<endl;
00201 #endif
00202       myOutputOffsetTable->declareOutput(object,
00203                                          name,
00204                                          outputDataSharedMemoryManager->globalAddressToLocal(res));
00205 #ifdef _DEBUGCREATIONOUTPUT
00206       cerr<<"On a déclaré la output "<<object<<","<<name<<endl;
00207 #endif
00208       myOutputOffsetTable->unlock();
00209    }
00210    return res;
00211 #else
00212    return 0 ;
00213 #endif
00214 }

void PsMomeController::errorMome   [static]
 

Une méthode pour gérer les errors.

int PsMomeController::getOutputHistorySize void    [virtual]
 

Recuperation de la taille de la file pour une output nécessaire pour le controleur.

aligns the défault calculated value so that the same memory pages are used for the same minor frames

Reimplemented from PsController.

Definition at line 326 of file PsMomeController.cxx.

References PsController::_nbStepsByCycle, and PsController::getOutputHistorySize().

Referenced by createControlledObjects().

00326                                                {
00327    //on aligne sur un multiple de nbMinor 
00328    int resul = PsDistributedController::getOutputHistorySize() ;
00329    if (resul % _nbStepsByCycle != 0) {
00330       resul = (resul / _nbStepsByCycle + 1) * _nbStepsByCycle ;
00331    }
00332    return 2 * resul;
00333 }  

void PsMomeController::init   [virtual]
 

Redéfinition pour gérer les initialisations manquées à cause de la distribution.

à la fin de cette initialisation, une synchronisation forte est faite sur la mémoire

Reimplemented from PsController.

Definition at line 137 of file PsMomeController.cxx.

References PsController::_stepPeriod, _tailleAlloueParSegment, map< PsName, typeObjet * >::begin(), map< PsName, typeObjet * >::clear(), map< PsName, PsnReferenceObjectHandle * >::empty(), map< PsName, typeObjet * >::end(), PsController::init(), PsnRelaxedMemoryManager::strongSync(), PsnRelaxedMemoryManager::strongSynchronizeRegion(), PsDistributedController::tableDesNonInitialises, and weakMemoryManager.

00137                             {
00138 #ifdef _MOME
00139    MomeBarrier();  
00140    cerr<<"PsMomeController::init() classique tentée "<<_stepPeriod<<endl;
00141    PsDistributedController::init();
00142    cerr<<"PsMomeController::init() : frequency locale : "<<_stepPeriod<<endl;
00143    while (! tableDesNonInitialises.empty ()) {
00144       cerr<<"Nouvelle initialisation des objets dont l'init a échouée"<<endl; 
00145       weakMemoryManager->strongSynchronizeRegion(0,_tailleAlloueParSegment);
00146       //syncAttributesAndEvents();
00147       PsNameToPointerMap<PsSimulatedObject> aInitialiser = tableDesNonInitialises ;
00148       tableDesNonInitialises.clear () ;
00149       PsNameToPointerMap<PsSimulatedObject>::iterator pNI ;
00150       //cout<<"*"<<endl;
00151       for (pNI = aInitialiser.begin () ;
00152            pNI != aInitialiser.end () ;
00153            pNI ++) {
00154          cout<<pNI->second->getName()<<" " ;
00155          initObjetReferentiel (pNI->second) ;
00156          cout<<".";
00157       }
00158       cout<<endl;
00159    }
00160    cerr<<"PsMomeController::init Synchronisation ";
00161    weakMemoryManager->strongSync();   
00162    cerr<<"efffective"<<endl;
00163 #endif
00164 }

void PsMomeController::invalidateOutput const PsName   object,
const PsName   name
[virtual]
 

A utiliser avec précaution (les multiples références ne sont pas gérées par cette version de la méthode) lors de la destruction d'une output.

Definition at line 216 of file PsMomeController.cxx.

References PsnOutputOffsetTable::invalidateOutput(), PsnOutputOffsetTable::lock(), myOutputOffsetTable, and PsnOutputOffsetTable::unlock().

Referenced by PsMomeOutput< Type >::~PsMomeOutput().

00216                                                                                   {
00217 #ifdef _MOME
00218    //cerr<<"PsMomeController::invalidateOutput("<<object<<","<<name<<")"<<endl;
00219    myOutputOffsetTable->lock();
00220    myOutputOffsetTable->invalidateOutput(object,name);
00221    myOutputOffsetTable->unlock();
00222    //cerr<<"PsMomeController::invalidateOutput done"<<endl;
00223 #endif
00224 }

PsnMirrorObjectHandle * PsMomeController::newPsnMirrorObjectHandle PsSimulatedObject   [virtual]
 

Redefinition to create a {PsnMomeMirrorObjectHandle}.

Implements PsDistributedController.

Definition at line 275 of file PsMomeController.cxx.

References _myBroadcastManager, and strictMemoryManager.

00275                                                                                            {
00276 #ifdef _MOME
00277    return new PsnMomeMirrorObjectHandle(obj, *_myBroadcastManager, *strictMemoryManager);
00278 #else
00279    return 0 ;
00280 #endif
00281 }

PsnReferenceObjectHandle * PsMomeController::newPsnReferenceObjectHandle PsSimulatedObject   object,
PsController   controller,
PsnSignalDispatcher   signalDispatcher
[virtual]
 

Redefinition to create a {PsnMomeReferenceObjectHandle}.

Reimplemented from PsController.

Definition at line 283 of file PsMomeController.cxx.

00286 {
00287 #ifdef _MOME
00288    return new PsnMomeReferenceObjectHandle(obj, controller, signalDispatcher) ; 
00289 #else
00290    return 0 ;
00291 #endif
00292 }

void PsMomeController::prepareEventProcessing list< PsEvent * > &    myList [virtual]
 

Redefined so as to collect event received by the BroadcastManager {PsnBroadcastManager}.

Reimplemented from PsSimulatedObject.

Definition at line 294 of file PsMomeController.cxx.

References _myBroadcastManager, PsnBroadcastManager::dispatchEventsOfList(), PsSimulatedObject::getObjectDescriptor(), and syncAttributesAndEvents().

00294                                                                           {
00295 #ifdef _MOME
00296    syncAttributesAndEvents();
00297 #ifdef _DEBUGEVT
00298    cerr<<"PsMomeController::prepareEventProcessing de "<<getObjectDescriptor().Processus()<<endl;
00299 #endif
00300    //dispatch events received from the broadcast manager
00301    _myBroadcastManager->dispatchEventsOfList(*this);
00302 #ifdef _DEBUGEVT
00303    cerr<<"PsMomeController::traiterEvt : events dispatched"<<endl;
00304 #endif
00305 #endif
00306 }

void PsMomeController::SigSegvExceptionThrower void *    [static]
 

Une methode static pour rattrapper les SIGSEGV.

Definition at line 46 of file PsMomeController.cxx.

00046                                                      {
00047    cerr<<"PsMomeController::SigSegvExceptionThrower"<<endl;
00048    exit(0);
00049 }

void PsMomeController::syncAttributesAndEvents void    [virtual]
 

Synchroniser toutes les outputs, tous les paramètres de controle, tous les messages et tous les événements.

Definition at line 230 of file PsMomeController.cxx.

References _myBroadcastManager, and PsnBroadcastManager::sync().

Referenced by prepareEventProcessing().

00231 {
00232 #ifdef _MOME
00233     //Synchroniser les données partagées avec les données locales
00234 //     PsNameToPointerMap<PsnMirrorObjectHandle>::iterator i;
00235 //     PsNameToPointerMap<PsOutputNT> * tableDesOutputs;
00236 //     PsNameToPointerMap<PsOutputNT>::iterator ii;
00237 //     PsNameToPointerMap<PsControlParameterNT> * tableDesParametres;
00238 //     PsNameToPointerMap<PsControlParameterNT>::iterator iii;
00239 //     for(i=_mirrorObjectsMap.begin();i!=_mirrorObjectsMap.end();i++){
00240 //        tableDesOutputs=((*i).second)->objetSimul()->TabOutputs();
00241 //        for(ii=tableDesOutputs->begin();ii!=tableDesOutputs->end();ii++) {
00242 //       (*ii).second->extract();
00243 //       //cout<<(*ii).first<<" : "<<*((*ii).second)<<endl;
00244 //        }
00245 //        tableDesParametres=((*i).second)->objetSimul()->TabParams();
00246 //        for(iii=tableDesParametres->begin();iii!=tableDesParametres->end();iii++) {
00247 //       (*iii).second->extract();
00248 //       //cout<<(*ii).first<<" : "<<*((*ii).second)<<endl;
00249 //        }      
00250 //     }
00251    _myBroadcastManager->sync();
00252 #endif
00253 }  

PsnSharedMemoryManager * PsMomeController::whichSharedMemoryManager void *    ptr [static]
 

Déterminer le gestionnaire de mémoire utilisé pour une adresse donnée.

Returns:
NULL si l'adresse proposée n'est pas géré par un des gestionnaire de mémoire associé au controleur, ou leur adresse sinon

Definition at line 166 of file PsMomeController.cxx.

References PsnSharedMemoryManager::inAdressSpace(), strictMemoryManager, and weakMemoryManager.

Referenced by PsString::alloue().

00166                                                                               {
00167 #ifdef _MOME
00168    if(strictMemoryManager!=NULL) {
00169       if(strictMemoryManager->inAdressSpace(ptr)) return strictMemoryManager;
00170    }
00171    if (weakMemoryManager!=NULL) {
00172       if(weakMemoryManager->inAdressSpace(ptr)) return weakMemoryManager;
00173    }
00174    return 0 ;
00175 #else
00176    return 0 ;
00177 #endif
00178 }


Member Data Documentation

PsnBroadcastManager* PsMomeController::_myBroadcastManager [protected]
 

le gestionnaire de communication avec les autres controleurs

Definition at line 147 of file PsMomeController.h.

Referenced by actOnSystemEvent(), newPsnMirrorObjectHandle(), prepareEventProcessing(), PsMomeController(), and syncAttributesAndEvents().

PsnUniqueCreator* PsMomeController::_sharedObjectFactory [protected]
 

L'usine à fabriquer des objets partagés.

Definition at line 141 of file PsMomeController.h.

Referenced by createControlledObjects(), and PsMomeController().

size_t PsMomeController::_tailleAlloueParSegment [protected]
 

taille des deux zones de mémoire gérées par Mome

Definition at line 126 of file PsMomeController.h.

Referenced by createControlledObjects(), init(), and PsMomeController().

int* PsMomeController::_zoneCoherenceForte [protected]
 

Pointeur sur la zone de mémoire dans laquelle est mappé le segment géré par cohérance forte.

Definition at line 129 of file PsMomeController.h.

Referenced by createControlledObjects(), and PsMomeController().

PsNameServer* PsMomeController::ancServeur [protected]
 

L'ancien serveur de nom.

Definition at line 144 of file PsMomeController.h.

PsnCoherantMemoryManager * PsMomeController::controlersDataSharedMemoryManager = NULL [static]
 

pointeur sur les gestionnaire de memoire gérant les données partagées entre les controleurs

Definition at line 22 of file PsMomeController.cxx.

Referenced by actOnSystemEvent(), and PsMomeController().

PsnOutputOffsetTable* PsMomeController::myOutputOffsetTable [protected]
 

La table de correspondance entre une output et son offset dans la mémoire partagée.

Definition at line 138 of file PsMomeController.h.

Referenced by creerDonneesOutput(), invalidateOutput(), and PsMomeController().

char * PsMomeController::nomExecutable = "none" [static, protected]
 

nom de l'executable, chemin complet compris

Definition at line 25 of file PsMomeController.cxx.

Referenced by PsMomeController().

int PsMomeController::numSegCoherenceForte [protected]
 

Le numero de segment géré par cohérance forte.

Definition at line 123 of file PsMomeController.h.

PsnRelaxedMemoryManager * PsMomeController::outputDataSharedMemoryManager = NULL [static]
 

pointeur sur le gestionnaire de mémoire pour les données associées aux outputs

Definition at line 21 of file PsMomeController.cxx.

Referenced by createControlledObjects(), creerDonneesOutput(), and PsMomeOutput< Type >::PsMomeOutput().

PsnSharedMemoryManager * PsMomeController::STLSharedMemoryManager = NULL [static]
 

pointeur sur le gestionnaire de mémoire pour la partie STL partagée avec cohérance forte

Definition at line 20 of file PsMomeController.cxx.

Referenced by mySharedAllocatorT< T >::allocate(), mySharedAllocator::allocate(), mySharedAllocatorT< T >::deallocate(), mySharedAllocator::deallocate(), and PsMomeController().

PsnCoherantMemoryManager * PsMomeController::strictMemoryManager = NULL [static, protected]
 

pointeur sur le gestionnaire de mémoire à cohérance forte.

Donnée de classe car on suppose qu'il n'y a qu'un controleur Mome par processus, et que la méthode de classe whichMomeMemoryManager en a besoin.

Definition at line 23 of file PsMomeController.cxx.

Referenced by newPsnMirrorObjectHandle(), PsMomeController(), and whichSharedMemoryManager().

PsnRelaxedMemoryManager * PsMomeController::weakMemoryManager = NULL [static, protected]
 

pointeur sur le gestionnaire de mémoire à cohérance relachée.

Donnée de classe car on suppose qu'il n'y a qu'un controleur Mome par processus, et que la méthode de classe whichMomeMemoryManager en a besoin.

Definition at line 24 of file PsMomeController.cxx.

Referenced by computeNextSimulationStep(), createControlledObjects(), init(), whichSharedMemoryManager(), and ~PsMomeController().


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

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

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