Première version
This commit is contained in:
BIN
doc/libshmem.doc
Normal file
BIN
doc/libshmem.doc
Normal file
Binary file not shown.
588
doc/man3/libshmem.3
Normal file
588
doc/man3/libshmem.3
Normal file
@@ -0,0 +1,588 @@
|
||||
'\" t
|
||||
.\" @(#)LIBSM.3 99/10/27 SMA;
|
||||
.TH LIBSM 3 "27 Oct 1999"
|
||||
.SH NOM
|
||||
LIBSM (librairie de memoires partagees)
|
||||
.SH SYNOPSIS
|
||||
.LP
|
||||
.BI "cc [flag ...] file ... -lver -ldl -lnode -lshmem [library ...]"
|
||||
.LP
|
||||
.BI "#include <shmem.h>"
|
||||
.LP
|
||||
.BI "SMT_Status SM_Library_Open ( int " Instance ", const char * " Context_Name ", SMT_Flags " Open_Mode " );"
|
||||
.LP
|
||||
.BI "SMT_Status SM_Library_Instance_Get ( int * " Instance " );"
|
||||
.LP
|
||||
.BI "SMT_Status SM_Library_Context_Set ( char * " Context_Name " );"
|
||||
.LP
|
||||
.BI "SMT_Status SM_Library_Context_Get ( char ** " Context_Name " );"
|
||||
.LP
|
||||
.BI "SMT_Status SM_Library_Close ( SMT_Flags " Close_Mode " );"
|
||||
.LP
|
||||
.BI "SMT_Status SM_Library_Stderr_Set ( FILE * " Out " );"
|
||||
.LP
|
||||
.BI "SMT_Status SM_Heap_Exist ( char * " Heap_Name " );"
|
||||
.LP
|
||||
.BI "SMT_Status SM_Heap_Open ( char * " Heap_Name ", SMT_Heap ** " Heap ", size_t " Seg_Size " , SMT_Flags " Open_Flags ", int * " Locked " );"
|
||||
.LP
|
||||
.BI "SMT_Status SM_Heap_Close ( SMT_Heap * " Heap " );"
|
||||
.LP
|
||||
.BI "SMT_Status SM_Heap_End ( char * " Heap_Name " );"
|
||||
.LP
|
||||
.BI "SMT_Status SM_Heap_Compress ( SMT_Heap * " Heap ", size_t * " Size " );"
|
||||
.LP
|
||||
.BI "SMT_Status SM_Heap_Check ( SMT_Heap * " Heap ", int * " Nb_Detected " , int * " Nb_Corrected ", FILE * " Out " );"
|
||||
.LP
|
||||
.BI "SMT_Status SM_Heap_Lock ( SMT_Heap * " Heap ", SMT_Flags " Lock_Flags ", int * " Locked " );"
|
||||
.LP
|
||||
.BI "SMT_Status SM_Heap_Unlock ( SMT_Heap * " Heap " );"
|
||||
.LP
|
||||
.BI "SMT_Status SM_Heap_Config ( SMT_Heap * " Heap ", SMT_Tag " Tag ", ... );"
|
||||
.LP
|
||||
.BI "SMT_Status SM_Chunk_Alloc ( SMT_Heap * " Heap ", void ** " Ptr ", size_t " Size " );"
|
||||
.LP
|
||||
.BI "SMT_Status SM_Chunk_Free ( SMT_Heap * " Heap ", void * " Ptr " );"
|
||||
.LP
|
||||
.SH GENERALITES
|
||||
.LP
|
||||
La librairie LIBSM permet de gerer des espaces de memoire partagee.
|
||||
Ces espaces de memoire partagee (notion de 'heap') sont references dans une base geree par la librairie.
|
||||
.LP
|
||||
La librairie permet de gerer plusieurs instances, chacune ayant une base qui lui est propre.
|
||||
Pour chaque instance, des contextes d'utilisation pourront etre definis.
|
||||
.LP
|
||||
Les heaps sont constitues de blocs memoire (notion de 'chunk') qui pourront etre alloues et desalloues par les programmes y accedant de maniere concurrente.
|
||||
.LP
|
||||
Chaque heap presente la particularite d'etre :
|
||||
.LP
|
||||
.RS 3
|
||||
- identifie par un nom unique dans la base
|
||||
.LP
|
||||
- securise : les acces concurrents sont geres par l'utilisation de semaphores
|
||||
.RS -3
|
||||
.LP
|
||||
La librairie propose des fonctions de gestion :
|
||||
.LP
|
||||
.RS 3
|
||||
- de la base de la librairie (initialisation, ouverture, fermeture, destruction).
|
||||
.LP
|
||||
- des heaps (creation, ouverture, verrouillage, compression, deverrouillage, fermeture, destruction)
|
||||
.LP
|
||||
- des chunks (allocation, desallocation)
|
||||
.RS -3
|
||||
.LP
|
||||
.BI "BASE DE HEAPS"
|
||||
.LP
|
||||
La base constitue l'espace commun a tous les utilisateurs d'une instance de la librairie.
|
||||
.LP
|
||||
Cette base est initialisee une premiere fois et reference la liste de tous les heaps de l'instance.
|
||||
.LP
|
||||
Cette base est protegee par un systeme de verrou permettant de gerer les acces concurrents aux differents heaps.
|
||||
.LP
|
||||
.I NB
|
||||
: la base contient un heap 'systeme' qui gere les ressources des autres heaps (dits heaps 'utilisateur').
|
||||
Ce heap 'systeme' est un heap prive qui ne devra pas etre accede directement par les utilisateurs de la librairie.
|
||||
.LP
|
||||
.BI "NOTION DE HEAP"
|
||||
.LP
|
||||
Un heap est un espace de memoire partagee reference dans la base.
|
||||
Il y est identifie de maniere unique par son nom.
|
||||
.LP
|
||||
La notion de contexte d'utilisation permet de distinguer des heaps en prefixant leur nom par ce contexte.
|
||||
.LP
|
||||
Les acces concurrents aux ressources d'un heap sont geres par un systeme de verrou qui autorise :
|
||||
.LP
|
||||
.RS 3
|
||||
- plusieurs acces en lecture simultanes (verrous partages)
|
||||
.LP
|
||||
- un seul acces en ecriture (verrou exclusif)
|
||||
.RS -3
|
||||
.LP
|
||||
.I NB
|
||||
: un verrouillage est opere en mode 'wait', ce qui signifie que les processus desirant verrouiller une ressource non disponible sera mis en attente jusqu'a sa mise en disponibilite.
|
||||
.LP
|
||||
.BI "NOTION DE CHUNK"
|
||||
.LP
|
||||
Un chunk est un bloc d'allocation memoire au sein d'un heap.
|
||||
.LP
|
||||
Un chunk appartient necessairement a une liste de chunks alloues au sein du heap (ACR) ou bien a celle de ses chunks libres (FCR).
|
||||
.LP
|
||||
.SH TYPES
|
||||
.LP
|
||||
La librairie met a la disposition des utilisateurs les types suivants :
|
||||
.LP
|
||||
.BI "SMT_Flags
|
||||
.LP
|
||||
.RS 3
|
||||
Ce type d'indicateur permet de preciser le mode d'ouverture d'une instance/d'un heap de la librairie.
|
||||
.LP
|
||||
.RS 3
|
||||
-
|
||||
.B SMD_OPEN
|
||||
: pour ouvrir une instance/un heap existante/existant
|
||||
.LP
|
||||
-
|
||||
.B SMD_CREAT
|
||||
: pour creer l'instance/le heap si elle/il n'existe pas
|
||||
.LP
|
||||
.RS -3
|
||||
.LP
|
||||
Pour l'ouverture de la librairie, il permet en outre de preciser le mode de debugging :
|
||||
.LP
|
||||
.RS 3
|
||||
-
|
||||
.B SM_DEBUG_NONE
|
||||
: aucun message d'erreur n'est affiche
|
||||
.LP
|
||||
-
|
||||
.B SM_DEBUG
|
||||
: les messages d'erreur generes par la librairie LIBSHMEM sont affiches sur la sortie standard d'erreur
|
||||
.LP
|
||||
-
|
||||
.B SM_DEBUG_ALL
|
||||
: les messages d'erreur generes par toutes les librairies sous-jacentes a la LIBSHMEM sont affiches sur la sortie standard d'erreur
|
||||
.RS -3
|
||||
.LP
|
||||
Pour l'ouverture d'un heap, il permet de preciser son type de verrouillage :
|
||||
.LP
|
||||
.RS 3
|
||||
-
|
||||
.B SMD_WRITE
|
||||
: acces en ecriture (pose d'un verrou exclusif )
|
||||
.LP
|
||||
-
|
||||
.B SMD_READ
|
||||
: acces en lecture (pose d'un verrou partage)
|
||||
.LP
|
||||
-
|
||||
.B SMD_UNDEF
|
||||
: aucun verrou.
|
||||
.LP
|
||||
.RS -3
|
||||
.RS -3
|
||||
.LP
|
||||
.BI "SMT_Heap
|
||||
.LP
|
||||
.RS 3
|
||||
Ce type permet de designer un heap ouvert par le processus courant.
|
||||
.LP
|
||||
C'est le seul type concernant les heaps qui sera manipule par les utilisateurs a travers les API de la librairie.
|
||||
.RS -3
|
||||
.LP
|
||||
.SH FONCTIONS
|
||||
.LP
|
||||
.BI "SMT_Status SM_Library_Open ( int " Instance ", const char * " Context_Name ", SMT_Flags " Open_Mode " );"
|
||||
.LP
|
||||
.RS 3
|
||||
Cette fonction permet d'acceder aux ressources partagees d'une instance de la librairie (base de heap, heap 'systeme').
|
||||
Elle devra necessairement etre appelee par tout programme utilisant la librairie.
|
||||
.LP
|
||||
Cette fonction attend les parametres suivants :
|
||||
.LP
|
||||
.RS 3
|
||||
* (In)
|
||||
.I Instance
|
||||
: numéro de l'instance a ouvrir.
|
||||
.LP
|
||||
.I NB
|
||||
: si cet argument vaut 0, alors c'est la variable d'environnement $INSTANCE qui definira le numéro de l'instance (1000 sinon).
|
||||
.LP
|
||||
* (In)
|
||||
.I Context
|
||||
: nom du contexte a utiliser.
|
||||
.LP
|
||||
.I NB
|
||||
: si cet argument est NULL, alors c'est la variable d'environnement $CONTEXT qui definira le nom du contexte, ("CTX" sinon).
|
||||
.LP
|
||||
* (In)
|
||||
.I Open_Mode
|
||||
: le mode d'ouverture de l'instance (
|
||||
.B SMD_CREATE
|
||||
pour la creation de l'instance, ou
|
||||
.B SMD_OPEN
|
||||
pour une ouverture simple)
|
||||
.LP
|
||||
.I NB
|
||||
: cette valeur pourra etre combinee avec un mode de debugging (
|
||||
.B SMD_DEBUG_NONE
|
||||
,
|
||||
.B SMD_DEBUG
|
||||
ou
|
||||
.B SMD_DEBUG_ALL
|
||||
)
|
||||
.LP
|
||||
.RS -3
|
||||
Outre l'acces aux ressources de l'instance, cette fonction provoque le verrouillage de la base en lecture.
|
||||
L'utilisateur de la librairie est ainsi assure de l'existence de ces ressources tout au long de leur utilisation.
|
||||
.LP
|
||||
.I NB
|
||||
: le mode d'ouverture
|
||||
.B SMD_CREATE
|
||||
est reserve aux administrateurs.
|
||||
.RS -3
|
||||
.LP
|
||||
.BI "SMT_Status SM_Library_Instance_Get ( int * " Instance " );"
|
||||
.LP
|
||||
.RS 3
|
||||
Cette fonction permet de recuperer dans l'argument
|
||||
.I Instance
|
||||
le numéro de l'instance utilisee.
|
||||
.RS -3
|
||||
.LP
|
||||
.BI "SMT_Status SM_Library_Context_Set ( char * " Context_Name " );"
|
||||
.LP
|
||||
.RS 3
|
||||
Cette fonction permet de definir
|
||||
.I Context_Name
|
||||
comme etant le nom du nouveau contexte d'utilisation de l'instance de la librairie LIBSHMEM.
|
||||
.LP
|
||||
.I NB
|
||||
: specifier un contexte implique que tous les heaps manipules seront prefixes par le nom de ce contexte.
|
||||
.RS -3
|
||||
.LP
|
||||
.BI "SMT_Status SM_Library_Context_Get ( char ** " Context_Name " );"
|
||||
.LP
|
||||
.RS 3
|
||||
Cette fonction permet de recuperer dans l'argument
|
||||
.I Context_Name
|
||||
le nom du contexte utilise.
|
||||
.RS -3
|
||||
.LP
|
||||
.BI "SMT_Status SM_Library_Close ( SMT_Flags " Close_Flags " );"
|
||||
.LP
|
||||
.RS 3
|
||||
Cette fonction permet de fermer l'instance de la librairie LIBSM.
|
||||
Elle libere egalement le verrou en lecture qui avait ete pose sur la base lors de l'ouverture de l'instance.
|
||||
Cette fonction doit donc etre systematiquement appelee a la fin de chaque programme utilisant la librairie.
|
||||
.LP
|
||||
L'argument
|
||||
.I Close_Flags
|
||||
est le mode de fermeture de l'instance :
|
||||
.LP
|
||||
.RS 3
|
||||
-
|
||||
.B SMD_CLOSE
|
||||
pour fermer simplement l'instance
|
||||
.LP
|
||||
-
|
||||
.B SMD_DESTROY
|
||||
pour detruire en outre toutes les ressources de l'instance
|
||||
.LP
|
||||
.RS -3
|
||||
.LP
|
||||
.I NB
|
||||
: le mode de fermeture
|
||||
.B SMD_DESTROY
|
||||
est reserve aux administrateurs.
|
||||
.LP
|
||||
Bien entendu, la destruction des ressouces de l'instance ne sera pas possible tant qu'il existera d'autres processus utilisant la meme instance.
|
||||
.RS -3
|
||||
.LP
|
||||
.BI "SMT_Status SM_Library_Stderr_Set ( FILE * " Out " );"
|
||||
.LP
|
||||
.RS 3
|
||||
Cette fonction permet de definir
|
||||
.I Out
|
||||
comme la sortie standard des messages d'erreur generes par la librarie.
|
||||
.RS -3
|
||||
.LP
|
||||
.BI "SMT_Status SM_Heap_Exist ( char * " Heap_Name " );"
|
||||
.LP
|
||||
.RS 3
|
||||
Cette fonction permet de tester si un heap existe deja dans la base.
|
||||
.LP
|
||||
L'argument
|
||||
.I Heap_Name
|
||||
est le nom du heap a tester.
|
||||
.LP
|
||||
.RS -3
|
||||
.BI "SMT_Status SM_Heap_Open ( char * " Heap_Name ", SMT_Heap ** " Heap ", size_t " Seg_Size ", SMT_Flags " Open_Flags ", int * " Locked " );"
|
||||
.LP
|
||||
.RS 3
|
||||
Cette fonction permet d'ouvrir ou de creer un heap 'utilisateur' dans la base.
|
||||
.LP
|
||||
Elle doit recevoir les arguments suivants :
|
||||
.LP
|
||||
.RS 3
|
||||
* (In)
|
||||
.I Heap_Name
|
||||
: le nom du heap
|
||||
.LP
|
||||
* (Out)
|
||||
.I Heap
|
||||
: l'adresse d'un pointeur sur le heap a ouvrir
|
||||
.LP
|
||||
* (In)
|
||||
.I Seg_Size
|
||||
: la taille des segments qui composeront le heap (une fois le heap cree, cette taille peut etre modifiee via la fonction SM_Heap_Config).
|
||||
.LP
|
||||
.I NB
|
||||
: si cet argument est nul, la taille sera par defaut de 102400 octets.
|
||||
.LP
|
||||
* (In)
|
||||
.I Open_Flags
|
||||
: le mode d'acces qui determine d'une part l'ouverture ou la creation du heap et d'autre part son type de verrouillage.
|
||||
.LP
|
||||
.I NB
|
||||
: les deux valeurs
|
||||
.B SMD_OPEN
|
||||
et
|
||||
.B SMD_CREATE
|
||||
peuvent etre combinees.
|
||||
.LP
|
||||
* (In)
|
||||
.I Locked
|
||||
: un pointeur sur un indicateur de verrouillage : il indique si le verrou a effectivement ete pose ou si le heap etait deja verrouille dans ce mode
|
||||
.RS -3
|
||||
.LP
|
||||
.I NB
|
||||
: le heap cree est constitue d'un seul segment de donnees et contient un unique chunk libre correspondant a ce premier segment de donnees.
|
||||
.LP
|
||||
.RS -3
|
||||
.LP
|
||||
.BI "SMT_Status SM_Heap_Close ( SMT_Heap * " Heap ");"
|
||||
.LP
|
||||
.RS 3
|
||||
Cette fonction permet de fermer un heap ouvert.
|
||||
.LP
|
||||
Elle permet non seulement de detacher les ressources du heap du processus appelant, mais elle permet aussi de liberer le verrou pose lors de l'ouverture du heap.
|
||||
.LP
|
||||
L'argument
|
||||
.I Heap
|
||||
est un pointeur sur un heap ouvert.
|
||||
.RS -3
|
||||
.LP
|
||||
.BI "SMT_Status SM_Heap_End ( char * " Heap_Name " );"
|
||||
.LP
|
||||
.RS 3
|
||||
Cette fonction permet de detruire un heap.
|
||||
.LP
|
||||
L'argument
|
||||
.I Heap_Name
|
||||
designe le nom du heap a detruire.
|
||||
.LP
|
||||
.RS -3
|
||||
.BI "SMT_Status SM_Heap_Compress ( SMT_Heap * " Heap ", size_t * " Size " );"
|
||||
.LP
|
||||
.RS 3
|
||||
Cette fonction permet de compresser un heap, ce qui consiste a fusionner les chunks libres dont les adresses se suivent.
|
||||
.LP
|
||||
Elle doit recevoir les arguments suivants :
|
||||
.LP
|
||||
.RS 3
|
||||
* (In)
|
||||
.I Heap
|
||||
: un pointeur sur un heap ouvert
|
||||
.LP
|
||||
* (Out)
|
||||
.I Size
|
||||
: un pointeur sur la taille gagnee par compression
|
||||
.RS -3
|
||||
.RS -3
|
||||
.LP
|
||||
.BI "SMT_Status SM_Heap_Check ( SMT_Heap * " Heap ", int * " Nb_Detected " , int * " Nb_Corrected ", FILE * " Out " );"
|
||||
.LP
|
||||
.RS 3
|
||||
Cette fonction permet de corriger les structures qui constituent un heap dans le cas ou celles-ci contiendraient des incoherences.
|
||||
.LP
|
||||
Un rapport complet de toutes les erreurs detectees et corrigees sur chacune des structures du heap est affiche.
|
||||
.LP
|
||||
Elle doit recevoir les arguments suivants :
|
||||
.RS 3
|
||||
.LP
|
||||
* (In)
|
||||
.I Heap
|
||||
: un pointeur sur un heap ouvert
|
||||
.LP
|
||||
* (Out)
|
||||
.I Nb_Detected
|
||||
: un pointeur sur le nombre d'erreurs detectees
|
||||
.LP
|
||||
* (Out)
|
||||
.I Nb_Corrected
|
||||
: un pointeur sur le nombre d'erreurs corrigees
|
||||
.LP
|
||||
* (In)
|
||||
.I Out
|
||||
: un pointeur sur le flux de sortie du rapport
|
||||
.LP
|
||||
.RS -3
|
||||
.I NB
|
||||
: cette fonction est automatiquement activee lors de l'ouverture d'un heap qui est dans un etat invalide (c.a.d un heap dont une mise a jour n'a pas ete a son terme).
|
||||
.LP
|
||||
Si toutes les erreurs detectees n'ont pas pu etre corrigees, le heap est declare corrompu et ne sera plus accessible par personne.
|
||||
.LP
|
||||
.RS -3
|
||||
.BI "SMT_Status SM_Heap_Lock ( SMT_Heap * " Heap ", SMT_Flags " Lock_Flags ", int * " Locked " );"
|
||||
.LP
|
||||
.RS 3
|
||||
Cette fonction permet de poser un verrou sur un heap.
|
||||
.LP
|
||||
Elle doit recevoir les arguments suivants :
|
||||
.LP
|
||||
.RS 3
|
||||
* (In)
|
||||
.I Heap
|
||||
: un pointeur sur un heap ouvert
|
||||
.LP
|
||||
* (In)
|
||||
.I Lock_Flags
|
||||
: le mode de verrouillage
|
||||
.LP
|
||||
* (Out)
|
||||
.I Locked
|
||||
: un pointeur sur un indicateur de verrouillage qui indique si le verrou a effectivement ete pose ou si le heap etait deja verrouille dans ce mode
|
||||
.LP
|
||||
.RS -3
|
||||
.I NB
|
||||
: si le heap est deja verrouille avec le mode demande, alors l'indicateur de verrouillage sera valorise a FALSE.
|
||||
.LP
|
||||
Si le heap est deja verrouille avec un autre type de verrou, alors la fonction retournera
|
||||
.B SMS_KO
|
||||
.
|
||||
.RS -3
|
||||
.LP
|
||||
.BI "SMT_Status SM_Heap_Unlock ( SMT_Heap * " Heap " );"
|
||||
.LP
|
||||
.RS 3
|
||||
Cette fonction permet d'oter le verrou qui a ete pose sur un heap.
|
||||
.LP
|
||||
L'argument
|
||||
.I Heap
|
||||
est un pointeur sur le heap a deverrouiller.
|
||||
.RS -3
|
||||
.LP
|
||||
.BI "SMT_Status SM_Heap_Config ( SMT_Heap * " Heap ", SMT_Tag " Tag ", ... );"
|
||||
.LP
|
||||
.RS 3
|
||||
Cette fonction permet de configurer certain aspects d'un heap.
|
||||
.LP
|
||||
Elle doit recevoir les aruments suivants :
|
||||
.LP
|
||||
.RS 3
|
||||
* (In)
|
||||
.I Heap
|
||||
: un pointeur sur le heap a configurer.
|
||||
.LP
|
||||
* (In)
|
||||
.I Tag
|
||||
: le type de configuration
|
||||
.LP
|
||||
.RS 3
|
||||
-
|
||||
.B SMD_SEGMENT_SIZE
|
||||
: definition de la taille (en octets) des nouveaux segments de donnees qui composeront le heap (par defaut, les heaps sont composes de segments de 102 400 octets).
|
||||
.LP
|
||||
-
|
||||
.B SMD_HEAP_LIMIT
|
||||
: limitation de la taille totale des segments de donnees qui composent le heap (par defaut, un heap n'est pas limite en taille).
|
||||
.LP
|
||||
-
|
||||
.B SMD_AUTO_COMPRESS
|
||||
: nombre de chunks libres a partir duquel le heap est automatiquement compresse (la valeur SMD_NO_AUTO_COMPRESS permet de desactiver cette procedure automatique).
|
||||
.LP
|
||||
NB : cette limite est fixee par defaut a 1 000 chunks.
|
||||
.LP
|
||||
.RS -3
|
||||
.RS -3
|
||||
.RS -3
|
||||
.BI "SMT_Status SM_Chunk_Alloc ( SMT_Heap * " Heap ", void ** " Ptr ", size_t " Size " );"
|
||||
.LP
|
||||
.RS 3
|
||||
Cette fonction permet de reserver de la memoire dans un heap.
|
||||
.LP
|
||||
Elle doit recevoir les arguments suivants :
|
||||
.LP
|
||||
.RS 3
|
||||
* (In)
|
||||
.I Heap
|
||||
: un pointeur sur un heap ouvert
|
||||
.LP
|
||||
* (In)
|
||||
.I Size
|
||||
: la taille du chunk (en octets)
|
||||
.LP
|
||||
* (Out)
|
||||
.I Ptr
|
||||
: l'adresse du pointeur de chunk
|
||||
.RS -3
|
||||
.LP
|
||||
.RS -3
|
||||
.BI "SMT_Status SM_Chunk_Free ( SMT_Heap * " Heap ", void * " Ptr " );"
|
||||
.LP
|
||||
.RS 3
|
||||
Cette fonction permet de liberer de la memoire dans un heap.
|
||||
.LP
|
||||
Elle doit recevoir les arguments suivants :
|
||||
.LP
|
||||
.RS 3
|
||||
* (In)
|
||||
.I Heap
|
||||
: un pointeur sur un heap ouvert
|
||||
.LP
|
||||
* (In)
|
||||
.I Ptr
|
||||
: un pointeur de chunk
|
||||
.RS -3
|
||||
.RS -3
|
||||
.LP
|
||||
.SH CODE RETOUR
|
||||
.LP
|
||||
Toutes les fonctions constituant l'API de la librairie retourne une valeur de type
|
||||
.B SMT_Status
|
||||
:
|
||||
.LP
|
||||
.RS 3
|
||||
-
|
||||
.B SMS_OK
|
||||
: la fonction s'est correctement executee et a produit un resultat
|
||||
.LP
|
||||
-
|
||||
.B SMS_KO
|
||||
: la fonction s'est correctement executee mais n'a pas produit de resultat
|
||||
.LP
|
||||
-
|
||||
.B SMS_ERRAPI
|
||||
: la fonction a ete appelee avec des arguments de valeur incorrecte
|
||||
.LP
|
||||
-
|
||||
.B SMS_ERRMEM
|
||||
: la fonction ne s'est pas correctement executee pour un probleme d'allocation memoire
|
||||
.LP
|
||||
-
|
||||
.B SMS_ERRSHM
|
||||
: la fonction ne s'est pas correctement executee pour un probleme relatif a la memoire partagee
|
||||
.LP
|
||||
-
|
||||
.B SMS_ERRSIG
|
||||
: une operation sur semaphore a ete interrompue par un signal
|
||||
.LP
|
||||
-
|
||||
.B SMS_ERRSEM
|
||||
: la fonction ne s'est pas correctement executee pour un probleme relatif a l'utilisation des semaphores
|
||||
.LP
|
||||
.RS -3
|
||||
.I NB
|
||||
: la macro
|
||||
.B SM_ERROR()
|
||||
permet de tester si un code retour correspond a une erreur.
|
||||
.LP
|
||||
En cas d'erreur, la variable
|
||||
.B SM_Error_Msg
|
||||
contient un message du type :
|
||||
.LP
|
||||
.RS 3
|
||||
Error <Nom fonction> : <message d'erreur>
|
||||
.RS -3
|
||||
.LP
|
||||
.I NB
|
||||
: dans la mesure du possible, la librairie tente en cas de probleme de revenir a la situation precedant l'appel a la fonction.
|
||||
.LP
|
||||
Toutefois, pour les cas plus difficiles, la librairie propose une procedure de verification et de correction (
|
||||
.B SM_Heap_Check
|
||||
) qui permet de corriger des incoherences sur les structures de donnees constituant un heap.
|
||||
.RS -3
|
||||
.LP
|
||||
.SH VOIR AUSSI
|
||||
.B libnode
|
||||
(3)
|
||||
Reference in New Issue
Block a user