Opérations atomiques dans ARM

J'ai travaillé sur un système d'exploitation embarqué pour les BRAS, Cependant il y a quelques choses que je ne comprenais pas sur l'architecture même après se référant à ARMARM et source de linux.

Des opérations atomiques.

Bras BRAS dit de Charger et de Stocker des instructions atomiques et c'est l'exécution est garantie pour être complet avant de gestionnaire d'interruption s'exécute. Vérifié en regardant

arch/arm/include/asm/atomic.h :
    #define atomic_read(v)  (*(volatile int *)&(v)->counter)
    #define atomic_set(v,i) (((v)->counter) = (i))

Cependant, le problème vient quand je veux manipuler cette valeur automatiquement à l'aide des instructions du processeur (atomic_inc, atomic_dec, atomic_cmpxchg etc..) dont l'utilisation LDREX et STREX pour ARMv7 (ma cible).

ARMARM ne dit rien sur les interruptions d'être bloqué dans cette section, donc je suppose une interruption peut se produire entre les LDREX et STREX. La chose qu'il ne mentionner sur le verrouillage de la mémoire de bus, qui je pense est uniquement utile pour les MP les systèmes où il peut y avoir plusieurs Processeurs en essayant d'accéder à un même endroit au même moment. Mais JUSQU' (et éventuellement en MP), Si une minuterie d'interruption (ou de l'IPI pour les SMP) feux dans cette petite fenêtre de LDREX et STREX, gestionnaire d'Exception exécute éventuellement des changements de contexte de processeur et retourne à la nouvelle tâche, mais le plus choquant vient maintenant, il exécute 'CLREX" et donc de supprimer toute verrou exclusif détenu par le thread précédent. Alors, comment mieux est d'utiliser LDREX et STREX de LDR et de STR pour l'atomicité sur un système ?

J'ai lu quelque chose à propos d'un verrou Exclusif moniteur, j'ai donc une possible théorie que lorsque le thread reprend et exécute le STREX, le système d'exploitation de surveiller les causes de cet appel à l'échec qui peut être détecté et la boucle peut être ré-exécuté à l'aide de la nouvelle valeur dans le processus (de la branche de retour à LDREX), Suis-je ici ?

source d'informationauteur sgupta