zion - atomic_add
Nom
atomic_add, atomic_sub, atomic_inc, atomic_dec - arithmétique sûre par rapport aux thread et au SMP (opérations atomiques)
Résumé
#include <asm/atomic.h> void atomic_add(int i , volatile atomic_t* v ) void atomic_sub(int i , volatile atomic_t* v ) void atomic_inc(volatile atomic_t* v ) void atomic_dec(volatile atomic_t* v ) int atomic_read(volatile atomic_t* v ) void atomic_set(volatile atomic_t* v , int i ) int atomic_dec_and_test(volatile atomic_t* v ) .HP
Description
Ces fonctions manipulent des variables du type atomic_t de manière sûre pour éviter les problèmes de partage de ressource dans un contexte multi-thread ou SMP (Symetrical MicroProcessor : machines multiprocesseurs). Ces variables permettent d'implémenter des sémaphores (pour assurer qu'une zone de code critique ne puisse être exécutée que par un seul processus) et des compteurs de références sûrs. Ces fonctions garantissent que l'opération associée est assurée correctement. Si nécessaire, un blocage du bus système est réalisé pour protéger l'opération. Généralement, le processeur dispose de quelques instructions réalisant ces opérations de manière sûre et rapide [ Ndt : les ix86 disposent d'instructions de test et d'affectation atomiques ].
atomic_dec_and_test décrémente la variable atomique et renvoie true si le résultat est zéro. Cette fonction est particulierement pratique pour impléménter des sémaphores sur les systèmes multiprocesseurs.
Valeurs de retour
La fonction atomic_read renvoie la valeur entière de la variable.
La fonction atomic_dec_and_test renvoie TRUE si la valeur devient zéro après la décrémentation.
Disponibilité
Linux 2.0+
Voir aussi
intro (9)
Auteur
Stephen Williams <steve@icarus.com>
Traduction
Thierry Vignaud < tvignaud@mandrakesoft.com >, 1999-2000
Quelqu'un aurait-il une traduction plus exacte que sémaphore pour spin lock ?
Bugs
Les opérations de lecture et d'écriture ne bénéficient pas de protection particulière.
Poster un commentaire