Page principale   Modules   Liste des composants   Liste des fichiers   Composants   Déclarations  

Interface de gestion mémoire
[Interface FRED]

Ce module définit comment allouer ou libérer de la mémoire atomiquement. Plus de détails...

Définitions des macros

#define FredNEW(T)   (T*)FredAtomicAlloc(sizeof(T))
 Alloue atomiquement un bloc pour un type donné.

#define FredNEW_VECTOR(T, CT)   (T*)FredAtomicCalloc(sizeof(T),(CT))
 Alloue atomiquement un vecteur de blocs pour un type donné.

#define FredDELETE(X)   FredAtomicFree((void*)X)
 Libère atomiquement un bloc ou un vecteur de blocs précédemment alloué.


Fonctions

void * FredAtomicAlloc (int x)
 Alloue atomiquement un bloc d'octets.

void * FredAtomicCalloc (int x, int y)
 Alloue atomiquement un vecteur de blocs d'octets.

void FredAtomicFree (void *x)
 Libère atomiquement un bloc précédemment alloué.


Description détaillée

Il suffit d'exécuter les procédure de la bibliothèque C en exclusion mutuelle.

Documentation de la macro

#define FredDELETE      FredAtomicFree((void*)X)
 

Paramètres:
X  bloc à libérer L'intérêt est de dissimuler la conversion de type

#define FredNEW      (T*)FredAtomicAlloc(sizeof(T))
 

Paramètres:
T  type à allouer
Renvoie :
un pointeur sur une valeur du type ou 0
L'intérêt est de dissimuler les concersions de type et calcul de taille en octets du bloc à allouer.

#define FredNEW_VECTOR T,
CT       (T*)FredAtomicCalloc(sizeof(T),(CT))
 

Paramètres:
T  type à allouer
CT  nombre d'item dans le vecteur
Renvoie :
un pointeur sur un vecteur du type ou 0
L'intérêt est de dissimuler les conversions de type et calcul de taille en octets du bloc à allouer.



Implantation Simple mise en exclusion mutuelle de la procédure équivalente de la lib C.


Documentation de la fonction

void* FredAtomicAlloc int    x
 

Paramètres:
x  nombre d'octets à allouer
Renvoie :
un pointeur sur un bloc ou 0
Voir le manuel unix pour malloc



Implantation Simple mise en exclusion mutuelle de la procédure équivalente de la lib C.

00019 {  
00020   FredMaskOn();
00021   void * y=malloc(x);    
00022   FredMaskOff(); 
00023   return y;  
00024 };

void* FredAtomicCalloc int    x,
int    y
 

Paramètres:
x  nombre d'octets à allouer par bloc
y  nombre de blocs
Renvoie :
un pointeur sur un vecteur de blocs ou 0
Voir le manuel unix pour calloc



Implantation Simple mise en exclusion mutuelle de la procédure équivalente de la lib C.

00041 {  
00042   FredMaskOn(); 
00043   void * z=calloc(x,y);   
00044   FredMaskOff();
00045   return z;   
00046 };

void FredAtomicFree void *    x
 

Paramètres:
x  bloc à libérer
Voir le manuel unix pour free



Implantation Simple mise en exclusion mutuelle de la procédure équivalente de la lib C.

00060 {  
00061   FredMaskOn();free(x);FredMaskOff();   
00062 };


Généré le Mon Jan 5 16:22:06 2004 par doxygen1.2.17