Archive 07/10/2020.

Xtimer_sleep

lebardix

Bjr,
Question: les temps de sortie de messages (printf, puts …) sont-ils comptés dans le thread ou bien traités dans un autre thread (iddle par exemple) ?

question subsidiaire :
si le temps de sortie dans une boucle d’un message printf avec une datation X est de 3s, et que l’on endort le thread 2s:

l’horodatage du prochain message de la boucle sera date +2s ou bien date +5s ???

Xtimer_sleep est une durée pour cette instruction ou pour le thread ??

merci

aabadie2

Bonjour,

Le printf dépend de l’implémentation de l’écriture sur l’UART mais généralement, ces appels sont bloquants (sauf si on utilise la DMA, ce qui n’est pas le cas par défaut sur le M3 avec RIOT).

Donc ces appels sont comptés dans le temps du thread.

Xtimer_sleep est une durée pour cette instruction ou pour le thread ??

C’est une durée d’attente pour le thread.

lebardix

Donc si la duree du printf en mode noDMA est >= Xtimer_sleep, le thread ne rendra jamais la main
?

aabadie2

Non, les 2 durées vont s’additionner. Donc le thread rendra la main à l’appel de xtimer_sleep.

lebardix

Bon je viens de tester,

je pensais que xtimer_sleep indiquait le temps pendant lequel pouvait s’executer le thread /o
mais non c’est simplement une durée “d’endormissement”…
qui a lieu au moment de l’exécution de la commande … pointbar…

Désolé pour la question stupide, … je révais d’un autre monde lalalaaa…

bonsoir et merci pour ce super mooc