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

PsnMomeMemoryManager Class Reference

Not used anymore. More...

#include <PsnMomeMemoryManager.h>

Inheritance diagram for PsnMomeMemoryManager:

Inheritance graph
[legend]
Collaboration diagram for PsnMomeMemoryManager:

Collaboration graph
[legend]
List of all members.

Public Methods

 PsnMomeMemoryManager (void *startDsm, size_t sizeDsm, size_t pageSize)
 Constructeur : a n'appeler qu'en exclusion mutuelle sur la zone mémoire gérée par PsnMemoryElementDescriptor::myMemoryManager.

virtual ~PsnMomeMemoryManager ()
 Desctructeur.

virtual void * mmalloc (size_t size)
 Allouer une zone de mémoire.

virtual void * allocateSizeRemembered (size_t size)
 Allouer une zone de mémoire de taille size, en se souvenant de la taille associée au pointeur.

virtual void * mfastmalloc (size_t size)
 allouer une zone de mémoire qu'on vient de désallouer.

virtual int mfree (void *addr, size_t size)
 Désalouer une zone de mémoire.

virtual int mfastfree (void *addr, size_t size)
 libération d'une zone de mémoire qu'on risque de réallouer rapidement.

virtual void mfree (void *ptr)
 Désallouer une zone de mémoire dont on a stocké la taille.

virtual void lock ()
 Proteger le Manager pour un accès en exclusion mutuelle.

virtual void unlock ()
 Lever l'exclusion mutuelle sur le memory manager.

virtual void lockIfNeeded ()
 Vérrouiller la mémoire si nécessaire, c'est-à-dire si les descripteurs de mémoire libre sont allouée par celle-çi.

virtual void unlockIfNeeded ()
 Dévérrouiller la mémoire si nécessaire, c'est-à-dire si les descripteurs de mémoire libre sont allouée par celle-çi.

unsigned int globalAddressToLocal (void *addr) const
 transformer une adresse de l'espace d'adressage virtuel du processus en adresse relative dans le segment de mémoire partagée.

void * localAddressToGlobal (unsigned int offset) const
 transformer une adresse local (relative) au segment en adresse de l'espace d'adressage virtuel du processus

virtual bool invalidOffset (unsigned int offset) const
 Verifier la validité d'un offset.

virtual unsigned int getAnInvalidOffset () const
 obtenir un offset invalide

bool inAdressSpace (void *ptr) const
 Permet de tester si une adresse est dans l'espace d'adresse gérée par le MomeMemoryManager.

virtual PsnMemoryElementDescriptorgetFreeMem ()
 accesseur (plus convertisseur * _freeMem

virtual void setFreeMem (PsnMemoryElementDescriptor *)
 accesseur (plus convertisseur * _freeMem) en écriture

virtual PsnMemoryElementDescriptorgetWeakFreeMem ()
 accesseur (plus convertisseur * _freeMem) de la zone faible gérée

virtual void setWeakFreeMem (PsnMemoryElementDescriptor *)
 accesseur (plus convertisseur * _freeMem) de la zone faible gérée en écriture

virtual void syncOfLock (void *beginningAdress, long length)
 synchronize partially the memory as it was when the lock was last obtained

virtual bool locked () const
 make sure access to the memory manager is locked : to be used only for debugging purposes

virtual size_t pageSize () const
 query for the size of the pages as allocated by the memoryManager

virtual void strongSynchronizeRegion (unsigned int base, size_t size)
 Synchronize a precise region.

virtual void handOver (void *pointer, size_t allocatedSize, size_t sizeBefore, size_t sizeAfter)
virtual void showMemory (void)
 pour cause de Debug, montrer l'état de la mémoire


Static Public Methods

PsnMomeMemoryManager * whichMomeMemoryManager (void *)
 Pour des raisons de compilation de template et de #ifdef _MOME, on introduit cette méthode de classe qui ne fait que renvoyer sur la méthode de classe du même nom dans le controleurMome.


Public Attributes

const unsigned int uniqueCreatorDataOffset
 L'emplacement fixé à l'avance où est stocké l'offset de la structure de donnée contenant l'information partagée.


Protected Methods

virtual void divideBlockFor (size_t size)
 divide a free block between a part starting on a free page and the rest

virtual size_t alignedSize (size_t size)
 aligner la taille de l'allocation

virtual void * get_from_free (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 add_in_free (void *addr, 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

PsnLock_myLock
 Le verrou associé à la zone de mémoire.

unsigned int _startDsm
 Le pointeur sur le debut de la zone gérée Le type utilisé est unsigned int pour éviter trop de transtypage à l'execution.

unsigned int _sizeDsm
 La taille de la zone gérée.

bool _locked
 La mémoire est elle déjà vérouillé par la processus courant A protégér en exclusion mutuelle si multi-thread.

pair< void *, size_t > freed
 la dernière zone libérée localement par fast free

size_t _pageSize
 La taille d'une page.

size_t _alignedSize
 Le nombre d'octets sur lesquels on aligne.

int _numberOfLocks
 the number of locks allready locally asked for


Detailed Description

Not used anymore.

Author:
basé sur un code fournit par Renaud Lottiaux.
Version:
0.9

Definition at line 35 of file PsnMomeMemoryManager.h.


Constructor & Destructor Documentation

PsnMomeMemoryManager::PsnMomeMemoryManager void *    startDsm,
size_t    sizeDsm,
size_t    pageSize
 

Constructeur : a n'appeler qu'en exclusion mutuelle sur la zone mémoire gérée par PsnMemoryElementDescriptor::myMemoryManager.

virtual PsnMomeMemoryManager::~PsnMomeMemoryManager   [virtual]
 

Desctructeur.


Member Function Documentation

virtual void PsnMomeMemoryManager::add_in_free void *    addr,
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

Reimplemented in PsnMomePagedWeakMemoryManager, and PsnMomeWeakMemoryManager.

virtual size_t PsnMomeMemoryManager::alignedSize size_t    size [protected, virtual]
 

aligner la taille de l'allocation

Parameters:
size : the size that needs to be allocated
Returns:
: the size which will really be allocated

virtual void* PsnMomeMemoryManager::allocateSizeRemembered size_t    size [virtual]
 

Allouer une zone de mémoire de taille size, en se souvenant de la taille associée au pointeur.

Pas d'exclusion mutuelle à l'appel

virtual void PsnMomeMemoryManager::divideBlockFor size_t    size [protected, virtual]
 

divide a free block between a part starting on a free page and the rest

Parameters:
size : the size that should be available for allocation after execution of this membre function

Reimplemented in PsnMomePagedWeakMemoryManager, and PsnMomeWeakMemoryManager.

virtual void* PsnMomeMemoryManager::get_from_free 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.

Reimplemented in PsnMomePagedWeakMemoryManager, and PsnMomeWeakMemoryManager.

virtual unsigned int PsnMomeMemoryManager::getAnInvalidOffset   const [virtual]
 

obtenir un offset invalide

virtual PsnMemoryElementDescriptor* PsnMomeMemoryManager::getFreeMem   [virtual]
 

accesseur (plus convertisseur * _freeMem

Reimplemented in PsnMomePagedWeakMemoryManager, and PsnMomeWeakMemoryManager.

virtual PsnMemoryElementDescriptor* PsnMomeMemoryManager::getWeakFreeMem   [virtual]
 

accesseur (plus convertisseur * _freeMem) de la zone faible gérée

unsigned int PsnMomeMemoryManager::globalAddressToLocal void *    addr const [inline]
 

transformer une adresse de l'espace d'adressage virtuel du processus en adresse relative dans le segment de mémoire partagée.

Definition at line 72 of file PsnMomeMemoryManager.h.

References _startDsm.

00072                                                                 {
00073       return ((unsigned int)addr)-_startDsm ;
00074    }

virtual void PsnMomeMemoryManager::handOver void *    pointer,
size_t    allocatedSize,
size_t    sizeBefore,
size_t    sizeAfter
[virtual]
 

bool PsnMomeMemoryManager::inAdressSpace void *    ptr const [inline]
 

Permet de tester si une adresse est dans l'espace d'adresse gérée par le MomeMemoryManager.

Definition at line 92 of file PsnMomeMemoryManager.h.

References _sizeDsm, and _startDsm.

00092                                                {
00093       unsigned int _ptr=(unsigned int)ptr;
00094       return ((_startDsm<=_ptr)&&(_ptr<_startDsm+_sizeDsm));
00095    }

virtual bool PsnMomeMemoryManager::invalidOffset unsigned int    offset const [virtual]
 

Verifier la validité d'un offset.

Parameters:
offset : l'offset dont on veut vérifier l'appartenance à la zone de mémoire
Returns:
: vrai si l'offset n'appartient pas à la zone de mémoire

void* PsnMomeMemoryManager::localAddressToGlobal unsigned int    offset const [inline]
 

transformer une adresse local (relative) au segment en adresse de l'espace d'adressage virtuel du processus

Definition at line 76 of file PsnMomeMemoryManager.h.

References _startDsm.

00076                                                                   {
00077       return (void *)(_startDsm+offset);
00078    }

virtual void PsnMomeMemoryManager::lock   [virtual]
 

Proteger le Manager pour un accès en exclusion mutuelle.

Après le verrou, on est sur de disposer de la version de la mémoire géree au moins aussi récente que celle disponible sur n'importe quelle processeur après unlock

virtual bool PsnMomeMemoryManager::locked   const [virtual]
 

make sure access to the memory manager is locked : to be used only for debugging purposes

virtual void PsnMomeMemoryManager::lockIfNeeded   [virtual]
 

Vérrouiller la mémoire si nécessaire, c'est-à-dire si les descripteurs de mémoire libre sont allouée par celle-çi.

virtual int PsnMomeMemoryManager::mfastfree void *    addr,
size_t    size
[virtual]
 

libération d'une zone de mémoire qu'on risque de réallouer rapidement.

Pas besoin de prétéger pas un verrou

virtual void* PsnMomeMemoryManager::mfastmalloc size_t    size [virtual]
 

allouer une zone de mémoire qu'on vient de désallouer.

Cette méthode essaie d'allouer la taille demandée dans le dernier bloc libéré localement. Il n'y a pas besoin de vérouiller la zone de mémoire pour le faire. En cas de besoin, cette méthode vérouille la mémoire, puis libère et fait appel à mmalloc

virtual void PsnMomeMemoryManager::mfree void *    ptr [virtual]
 

Désallouer une zone de mémoire dont on a stocké la taille.

Pas d'exclusion mutuelle à l'appel

virtual int PsnMomeMemoryManager::mfree void *    addr,
size_t    size
[virtual]
 

Désalouer une zone de mémoire.

Même protection que pour l'allocation

Reimplemented in PsnMomePagedWeakMemoryManager, and PsnMomeWeakMemoryManager.

virtual void* PsnMomeMemoryManager::mmalloc size_t    size [virtual]
 

Allouer une zone de mémoire.

A protéger par exclusion mutuelle si PsnMemoryElementDescriptor::myMemoryManager = this (il y a alors récursion) (a faire avec lockIfNeeded() ( et unlockIfNeeded ))

Reimplemented in PsnMomePagedWeakMemoryManager, and PsnMomeWeakMemoryManager.

virtual size_t PsnMomeMemoryManager::pageSize   const [virtual]
 

query for the size of the pages as allocated by the memoryManager

virtual void PsnMomeMemoryManager::setFreeMem PsnMemoryElementDescriptor   [virtual]
 

accesseur (plus convertisseur * _freeMem) en écriture

Reimplemented in PsnMomePagedWeakMemoryManager, and PsnMomeWeakMemoryManager.

virtual void PsnMomeMemoryManager::setWeakFreeMem PsnMemoryElementDescriptor   [virtual]
 

accesseur (plus convertisseur * _freeMem) de la zone faible gérée en écriture

virtual void PsnMomeMemoryManager::showMemory void    [virtual]
 

pour cause de Debug, montrer l'état de la mémoire

Reimplemented in PsnMomePagedWeakMemoryManager, and PsnMomeWeakMemoryManager.

virtual void PsnMomeMemoryManager::strongSynchronizeRegion unsigned int    base,
size_t    size
[virtual]
 

Synchronize a precise region.

virtual void PsnMomeMemoryManager::syncOfLock void *    beginningAdress,
long    length
[virtual]
 

synchronize partially the memory as it was when the lock was last obtained

Parameters:
beginningAdress address of the part of memory to partially synchronize
length size of the bit of memory to synchronize

virtual void PsnMomeMemoryManager::unlock   [virtual]
 

Lever l'exclusion mutuelle sur le memory manager.

virtual void PsnMomeMemoryManager::unlockIfNeeded   [virtual]
 

Dévérrouiller la mémoire si nécessaire, c'est-à-dire si les descripteurs de mémoire libre sont allouée par celle-çi.

PsnMomeMemoryManager* PsnMomeMemoryManager::whichMomeMemoryManager void *    [static]
 

Pour des raisons de compilation de template et de #ifdef _MOME, on introduit cette méthode de classe qui ne fait que renvoyer sur la méthode de classe du même nom dans le controleurMome.


Member Data Documentation

size_t PsnMomeMemoryManager::_alignedSize [protected]
 

Le nombre d'octets sur lesquels on aligne.

Definition at line 164 of file PsnMomeMemoryManager.h.

bool PsnMomeMemoryManager::_locked [protected]
 

La mémoire est elle déjà vérouillé par la processus courant A protégér en exclusion mutuelle si multi-thread.

Definition at line 157 of file PsnMomeMemoryManager.h.

PsnLock* PsnMomeMemoryManager::_myLock [protected]
 

Le verrou associé à la zone de mémoire.

Definition at line 147 of file PsnMomeMemoryManager.h.

int PsnMomeMemoryManager::_numberOfLocks [protected]
 

the number of locks allready locally asked for

Definition at line 166 of file PsnMomeMemoryManager.h.

size_t PsnMomeMemoryManager::_pageSize [protected]
 

La taille d'une page.

Definition at line 162 of file PsnMomeMemoryManager.h.

unsigned int PsnMomeMemoryManager::_sizeDsm [protected]
 

La taille de la zone gérée.

Definition at line 153 of file PsnMomeMemoryManager.h.

Referenced by inAdressSpace().

unsigned int PsnMomeMemoryManager::_startDsm [protected]
 

Le pointeur sur le debut de la zone gérée Le type utilisé est unsigned int pour éviter trop de transtypage à l'execution.

Definition at line 151 of file PsnMomeMemoryManager.h.

Referenced by globalAddressToLocal(), inAdressSpace(), and localAddressToGlobal().

pair<void *,size_t> PsnMomeMemoryManager::freed [protected]
 

la dernière zone libérée localement par fast free

Definition at line 160 of file PsnMomeMemoryManager.h.

const unsigned int PsnMomeMemoryManager::uniqueCreatorDataOffset
 

L'emplacement fixé à l'avance où est stocké l'offset de la structure de donnée contenant l'information partagée.

Definition at line 80 of file PsnMomeMemoryManager.h.


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

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

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