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

PsnMomeArray< T > Class Template Reference

an array whose element are dispersed on different memory pages More...

#include <PsnMomeArray.h>

Inheritance diagram for PsnMomeArray< T >:

Inheritance graph
[legend]
Collaboration diagram for PsnMomeArray< T >:

Collaboration graph
[legend]
List of all members.

Public Methods

 PsnMomeArray (size_t taille, PsnRelaxedMemoryManager &memoryManager)
virtual ~PsnMomeArray ()
virtual T & operator[] (int i)
virtual const T & operator[] (int i) const
void * operator new (size_t size, PsnRelaxedMemoryManager *memoryManager)
void operator delete (void *, size_t)
virtual void resync (PsnRelaxedMemoryManager *myMemory) const

Protected Attributes

unsigned int _offset
size_t _step
size_t _taille

Detailed Description

template<typename T>
class PsnMomeArray< T >

an array whose element are dispersed on different memory pages

Definition at line 27 of file PsnMomeArray.h.


Constructor & Destructor Documentation

template<typename T>
PsnMomeArray< T >::PsnMomeArray size_t    taille,
PsnRelaxedMemoryManager   memoryManager
 

Definition at line 59 of file PsnMomeArray.h.

References PsnMomeArray< T >::_offset, PsnMomeArray< T >::_step, HeapStackTop::globalMemoryManagerKey, and PsDate.

00060                                                                                       : PsnAbstractArray<T> (taille), _taille(taille) {
00061    HeapStackTop specialContext(&memoryManager);
00062   //cerr<<"PsnMomeArray< T >::PsnMomeArray "<<sizeof(T)<<" "<<_taille<<endl;
00063    unsigned int initialOffset;   
00064    _offset=(unsigned int)memoryManager.mmallocInPages(sizeof(T), &initialOffset, &_step);
00065    assert( pthread_getspecific(HeapStackTop::globalMemoryManagerKey) != NULL );
00066    for (unsigned int i=0; i<taille ; i++) {
00067       memoryManager.anticipateFreeStoreAllocation(i);
00068       T * tmp = new((void *) (_offset + i *_step) ) T();
00069       tmp->dateValeur = PsDate( - 2 ) ;
00070    }
00071    memoryManager.anticipateFreeStoreAllocation(-1);

template<typename T>
PsnMomeArray< T >::~PsnMomeArray   [virtual]
 

Definition at line 74 of file PsnMomeArray.h.

References PsnMomeArray< T >::_offset, PsnRelaxedMemoryManager::mfreeInPages(), and PsnMemoryManager::whichMemoryManager().

00075                                  {
00076    PsnRelaxedMemoryManager * memoryManager = dynamic_cast<PsnRelaxedMemoryManager *>(PsnMemoryManager::whichMemoryManager((void *)_offset));
00077    //assert (memoryManager != NULL) ;
00078    memoryManager->mfreeInPages((void *)(_offset), sizeof(T));


Member Function Documentation

template<typename T>
void PsnMomeArray< T >::operator delete void *   ,
size_t   
 

Definition at line 50 of file PsnMomeArray.h.

References PsnRelaxedMemoryManager::mfreeForOnce(), and PsnMemoryManager::whichMemoryManager().

00051                                                                {
00052    PsnRelaxedMemoryManager * freeFrom = dynamic_cast <PsnRelaxedMemoryManager * > (PsnMemoryManager::whichMemoryManager( addr )) ;
00053    //assert (freeFrom != NULL) ;
00054    freeFrom->mfreeForOnce(addr, size) ;
00055   

template<typename T>
void * PsnMomeArray< T >::operator new size_t    size,
PsnRelaxedMemoryManager   memoryManager
 

Definition at line 45 of file PsnMomeArray.h.

References PsnRelaxedMemoryManager::mmallocForOnce().

00046                                                                                             {
00047    return memoryManager->mmallocForOnce (size) ;

template<typename T>
const T & PsnMomeArray< T >::operator[] int    i const [virtual]
 

Implements PsnAbstractArray< T >.

Definition at line 90 of file PsnMomeArray.h.

References PsnMomeArray< T >::_offset, and PsnMomeArray< T >::_step.

00091                                                        {
00092    //assert(i < _taille) ;
00093    return *(T *) (_offset + i * _step) ;

template<typename T>
T & PsnMomeArray< T >::operator[] int    i [virtual]
 

Implements PsnAbstractArray< T >.

Definition at line 82 of file PsnMomeArray.h.

References PsnMomeArray< T >::_offset, and PsnMomeArray< T >::_step.

00083                                            {
00084    //cerr<<"PsnMomeArray< T >::operator [] "<<(void *)_offset<<" "<< i <<" "<<_taille<<endl;
00085    //assert(i < _taille) ;
00086    return *((T *) (_offset + i * _step)) ;

template<typename T>
void PsnMomeArray< T >::resync PsnRelaxedMemoryManager   myMemory const [virtual]
 

Definition at line 95 of file PsnMomeArray.h.

References PsnMomeArray< T >::_offset, PsnMomeArray< T >::_step, PsnMomeArray< T >::_taille, PsnSharedMemoryManager::globalAddressToLocal(), and PsnRelaxedMemoryManager::strongSynchronizeRegion().

00096                                                                           {
00097    myMemory->strongSynchronizeRegion( (myMemory->globalAddressToLocal((void *)_offset)/4096) * 4096,
00098                                        _step * _taille);


Member Data Documentation

template<typename T>
unsigned int PsnMomeArray< T >::_offset [protected]
 

Definition at line 37 of file PsnMomeArray.h.

Referenced by PsnMomeArray< T >::operator[](), PsnMomeArray< T >::PsnMomeArray(), PsnMomeArray< T >::resync(), and PsnMomeArray< T >::~PsnMomeArray().

template<typename T>
size_t PsnMomeArray< T >::_step [protected]
 

Definition at line 38 of file PsnMomeArray.h.

Referenced by PsnMomeArray< T >::operator[](), PsnMomeArray< T >::PsnMomeArray(), and PsnMomeArray< T >::resync().

template<typename T>
size_t PsnMomeArray< T >::_taille [protected]
 

Definition at line 39 of file PsnMomeArray.h.

Referenced by PsnMomeArray< T >::resync().


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