Ce module regroupe les API de gestion de tâches.
#define AVRX_DECLARE_TASK |
( |
|
task_name, |
|
|
|
stack_size, |
|
|
|
priority |
|
) |
| |
Déclare et initialise un xTcb.
- Paramètres
-
task_name | Nom de la tâche |
stack_size | Nombre d'octets réservés à la pile de la tâche |
priority | Priorité de la tâche (1 est plus prioritaire que 2) |
- Exemples:
- avrx/message/demo_avrx_message.c.
Définition à la ligne 50 du fichier avrx.h.
#define AVRX_EXTERN_TASK |
( |
|
task_name | ) |
|
Déclare un xTcb et une fonction de tâche externe.
- Paramètres
-
Définition à la ligne 80 du fichier avrx.h.
#define AVRX_FUNC |
( |
|
task_name | ) |
|
Fonction exécutée par une tâche.
Définie le corps d'une fonction exécutée par une tâche .
Une fonction de ce type de prend aucun paramètre et ne retourne jamais.
- Paramètres
-
Définition à la ligne 60 du fichier avrx.h.
#define AVRX_NAKED_FUNC |
( |
|
task_name | ) |
|
Fonction exécutée par une tâche.
Définie le corps d'une fonction exécutée par une tâche .
Une fonction de ce type de prend aucun paramètre et ne retourne jamais.
NACKED indique que cette fonction ...
- Paramètres
-
Définition à la ligne 91 du fichier avrx.h.
#define AVRX_TASK |
( |
|
task_name, |
|
|
|
stack_size, |
|
|
|
priority |
|
) |
| |
Renvoie le pointeur sur l'identifiant d'une tâche.
- Paramètres
-
Définition à la ligne 99 du fichier avrx.h.
Renvoie le pointeur sur le xTcb d'une tâche.
- Paramètres
-
Définition à la ligne 107 du fichier avrx.h.
#define vAvrXRunTask (task_name); |
#define xAvrXInitTask (task_name); |
Initialise une tâche.
Initialise une tâche en initialisant et en sauvegardant son contexte sur la pile. Le contexte est constitué de tous les registres de calcul du processeur. Tous ces registres sont initialisés à zéro.
- Paramètres
-
- Renvoie
- le pid ?
Définition à la ligne 119 du fichier avrx.h.
Identifiant d'une tâche.
Un identifiant de tâche (pid) est un pointeur sur le bloc de RAM qui contient l'état de cette tâche.
Définition à la ligne 202 du fichier avrx.h.
Un processus.
Bloc de RAM qui contient l'état de la tâche.
Bloc de contrôle de tâche.
Le Bloc de contrôle de tâche (Task Control Block) contient toutes les informations nécessaires à l'initialisation et au démarrage d'une tâche.
Ce bloc est stocké en FLASH. Il est utilisé uniquement par xAvrXInitTcb() ou vAvrXRunTcb().
void* pvAvrXSetKernelStack |
( |
void * |
pNewStack | ) |
|
Modifie la pile AvrX.
- Paramètres
-
pNewStack | Pointeur sur la fin de la nouvelle pile, si 0 la pile AvrX est initialisée à la valeur actuelle du pointeur de pile (SPH/SPL). |
- Renvoie
- Pointeur sur la fin de la nouvelle pile
Renvoie le PID de la tâche en cours.
- Renvoie
- Le PID de la tâche en cours d'exécution
void vAvrXIntReschedule |
( |
void |
| ) |
|
Permet une organisation collaborative au sein de l'organisation préemptive par priorité.
Réordonne la file d'exécution en passant la tâche de début en fin de file.
- Avertissement
- Ne peut être appelée qu'à partir du mode noyau AvrX (par exemple l'intérieur d'un gestionnaire d'interruption).
void vAvrXResume |
( |
xPid |
xP | ) |
|
Reprend l'exécution d'un processus.
Obtient une tâche prête à s'exécuter en insérant son PID dans la file d'exécution
- Paramètres
-
void vAvrXRunTcb |
( |
xTcb * |
pxTcb | ) |
|
Démarre une tâche.
Démarre une tâche en appelant d'abord xAvrXInitTcb() puis vAvrXResume().
vAvrXRunTcb() ou vAvrXResume() doivent être appelé par le main() afin d'insérer la tâche dans la file d'exécution.
- Paramètres
-
pxTcb | Pointeur sur le bloc de contrôle de la tâche |
void vAvrXSuspend |
( |
xPid |
xP | ) |
|
Suspend l'exécution d'une tâche.
Marque un PID pour la suspension en attente de retrait de la file d'exécution.
- Paramètres
-
void vAvrXTaskExit |
( |
void |
| ) |
|
Tue la tâche en cours.
Doit être appelée quand une tâche est terminée et ne fonctionnera plus. Cette fonction agit comme le «return» dans une fonction normale.
Idéalement, la tâche doit être inactive (pas en attente d'un sémaphore ou d'un message) avant que cette fonction soit appelée.
void vAvrXTerminate |
( |
xPid |
xP | ) |
|
Tue une tâche.
Identique à vAvrXTaskExit() si ce n'est que cette fonction permet de tuer une autre tâche.
- Paramètres
-
void vAvrXWaitTask |
( |
xPid |
xP | ) |
|
Synchronisation bloquante avec une autre tâche.
Permet d'attendre qu'une tâche passe à l'état d'exécution.
- Paramètres
-
Retire le processeur à la tâche en cours.
Retire le processeur à la tâche en cours et la réinsère dans la file des tâches en exécution. Si d'autres tâches de même priorité sont dans la file, la tâche qui abandonne le processeur est insérée en fin de file (algorithme Round Robin).
uint8_t xAvrXChangePriority |
( |
xPid |
xP, |
|
|
uint8_t |
xNewPriority |
|
) |
| |
Modifie la priorité d'une tâche.
- Paramètres
-
xP | Pointeur sur la tâche |
xNewPriority | Nouvelle valeur de priorité (1 est plus prioritaire que 2) |
- Renvoie
- La priorité avant modification (1 est plus prioritaire que 2)
Initialise une tâche.
Initialise une tâche en initialisant et en sauvegardant son contexte sur la pile. Le contexte est constitué de tous les registres de calcul du processeur. Tous ces registres sont initialisés à zéro.
- Paramètres
-
pxTcb | Pointeur sur le bloc de contrôle de la tâche |
- Renvoie
- Identifiant du processus initialisé
uint8_t xAvrXPriority |
( |
xPid |
xP | ) |
|
Renvoie la priorité courante d'une tâche.
- Paramètres
-
- Renvoie
- La priorité courante (1 est plus prioritaire que 2)
Renvoie l'état d'une tâche.
- Paramètres
-
- Renvoie
- AVRX_PEND, AVRX_DONE or AVRX_WAIT