Dans l'exemple ici, l'objectif étant d'utiliser une variable (case mémoire) commune entre 2 fonctions, l'une pouvant interrompre l'autre; Dans un OS, on peut utiliser un mutex
On pourrait simplifier à l'extrême et utiliser une implémentation qu'on pourrait appeler un "mutex matériel" comme tu le proposes (même si je ne suis pas entièrement d'accord pour des détails que je n'exposerait pas ici), mais "masquer des interruptions" est un mécanisme matériel qui peut être utilisé pour beaucoup plus de cas.
Je ne sais pas quelle est ta connaissance des micro-contrôleurs, processeurs, alors je vais simplifier pour ceux qui passent par là avec une connaissance limitée, ne te vexe pas alors si tu trouve ça trop simplifié! ;-)
Simplifié" à l'extrême, ne interruption, est un signal hardware ou software (appui sur un bouton, signal généré par un timer hardware, autre...) qui va faire que la cpu va interrompre l'exécution de la liste d'instructions en cours pour exécuter une fonction (listée dans la table des vecteurs d'interruption)
Si dans le cas ici, callback1 est une fonction appelée par la routine d'interruption, la cpu va interrompre l'exécution des instructions de la fonction main.
Masquer les interruptions permet d'empêcher l'exécution des routines d'interruptions (et donc de la fonction callback1) jusqu'à ce qu'on les réactive.
C'est comme l'histoire de 2 personnes (A et B) qui éditent un fichier partagé sur un disque partagé: si tu ne bloques pas B alors que A est en train de l'éditer, je te laisse imaginer les dégats.
[^] # Re: Un bug d'accès de variables partagées en passant...
Posté par plr . En réponse au journal TapTempo sur STM32F469i-Discovery. Évalué à 3.
Dans l'exemple ici, l'objectif étant d'utiliser une variable (case mémoire) commune entre 2 fonctions, l'une pouvant interrompre l'autre; Dans un OS, on peut utiliser un
mutex
On pourrait simplifier à l'extrême et utiliser une implémentation qu'on pourrait appeler un "mutex matériel" comme tu le proposes (même si je ne suis pas entièrement d'accord pour des détails que je n'exposerait pas ici), mais "masquer des interruptions" est un mécanisme matériel qui peut être utilisé pour beaucoup plus de cas.
Je ne sais pas quelle est ta connaissance des micro-contrôleurs, processeurs, alors je vais simplifier pour ceux qui passent par là avec une connaissance limitée, ne te vexe pas alors si tu trouve ça trop simplifié! ;-)
Simplifié" à l'extrême, ne interruption, est un signal hardware ou software (appui sur un bouton, signal généré par un timer hardware, autre...) qui va faire que la cpu va interrompre l'exécution de la liste d'instructions en cours pour exécuter une fonction (listée dans la table des vecteurs d'interruption)
Si dans le cas ici,
callback1est une fonction appelée par la routine d'interruption, la cpu va interrompre l'exécution des instructions de la fonctionmain.Masquer les interruptions permet d'empêcher l'exécution des routines d'interruptions (et donc de la fonction
callback1) jusqu'à ce qu'on les réactive.C'est comme l'histoire de 2 personnes (A et B) qui éditent un fichier partagé sur un disque partagé: si tu ne bloques pas B alors que A est en train de l'éditer, je te laisse imaginer les dégats.