Scroll to navigation

ATOMIC_ADD(9) Fonctions du noyau Linux ATOMIC_ADD(9)

NOM

atomic_add, atomic_sub, atomic_inc, atomic_dec - Arithmétique sûre par rapport aux thread et au SMP (opérations atomiques)

SYNOPSIS

#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)

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 ?

BOGUES

Les opérations de lecture et d'écriture ne bénéficient pas de protection particulière.

19 mars 1999 Linux