Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial Internet of Things >> Embarqué

Mémoire de partition :services utilitaires et structures de données


Voir la série RTOS Revealed

Cet article poursuit l'examen de la mémoire de partition RTOS.

Partition Pool Utility Services

Nucleus RTOS dispose de trois appels d'API qui fournissent des fonctions utilitaires associées aux pools de partitions :renvoient des informations sur un pool de partitions, renvoient le nombre de pools de partitions dans l'application et renvoient des pointeurs vers tous les pools de partitions de l'application. Les deux premiers d'entre eux sont implémentés dans Nucleus SE.

Obtention d'informations sur le pool de partitions

Cet appel de service obtient une sélection d'informations sur un pool de partitions. L'implémentation Nucleus SE diffère de Nucleus RTOS en ce qu'elle renvoie moins d'informations, car la dénomination des objets et l'ordre de suspension ne sont pas pris en charge et la suspension des tâches peut ne pas être activée.

Appel de l'API Nucleus RTOS pour les informations sur le pool de partitions

Prototype d'appel de service :

STATUS NU_Partition_Pool_Information(NU_PARTITION_POOL *pool, CHAR  *name, VOID **start_address, UNSIGNED *pool_size, UNSIGNED *partition_size, UNSIGNED *disponible, UNSIGNED *allocated, OPTION  *suspend_type, UNSIGNED *tasks_waiting, NU_TASK ); **

Paramètres :

piscine – pointeur vers le pool de partitions sur lequel des informations sont demandées

nom – pointeur vers une zone de destination à 8 caractères pour le nom du pool de partitions ; cela inclut l'espace pour le terminateur nul.

start_address – un pointeur vers une variable, qui recevra un pointeur vers le début de la zone de données du pool de partitions

pool_size – un pointeur vers une variable, qui recevra la taille du pool de partition (en octets)

partition_size – un pointeur vers une variable, qui recevra la taille des partitions de ce pool

disponible – un pointeur vers une variable, qui recevra le nombre de partitions actuellement disponibles dans ce pool

attribué – un pointeur vers une variable, qui recevra le nombre de partitions actuellement utilisées dans ce pool

suspend_type – pointeur vers une variable pour contenir le type de suspension de tâche ; les types de suspension de tâche valides sont NU_FIFO et NU_PRIORITY .

tasks_waiting – un pointeur vers une variable qui recevra le nombre de tâches suspendues sur ce pool de partitions

first_task – un pointeur vers un pointeur de tâche dans lequel est placé le pointeur de la première tâche suspendue

Retours :

NU_SUCCESS – l'appel s'est terminé avec succès

NU_INVALID_POOL – le pointeur du pool de partitions n'est pas valide

Appel API Nucleus SE pour informations sur le pool de partitions

Cet appel d'API prend en charge la fonctionnalité clé de l'API Nucleus RTOS.

Prototype d'appel de service :

STATUS NUSE_Partition_Pool_Information(NUSE_PARTITION_POOL pool, ADDR *start_address, U32 *pool_size, U16 *partition_size, U8 *available, U8 *allocated, U8 *tasks_waiting, NUSE_TASK *first_task)

Paramètres :

piscine – l'index du pool de partitions sur lequel des informations sont demandées

start_address – un pointeur vers une variable, qui recevra un pointeur vers le début de la zone de données du pool de partitions

pool_size – un pointeur vers une variable, qui recevra la taille du pool de partition (en octets)

partition_size – un pointeur vers une variable, qui recevra la taille des partitions de ce pool

disponible – un pointeur vers une variable, qui recevra le nombre de partitions actuellement disponibles dans ce pool

attribué – un pointeur vers une variable, qui recevra le nombre de partitions actuellement utilisées dans ce pool

tasks_waiting – un pointeur vers une variable qui recevra le nombre de tâches suspendues sur ce pool de partition (rien n'est renvoyé si la suspension de tâche est désactivée)

first_task – un pointeur vers une variable de type NUSE_TASK qui recevra l'index de la première tâche suspendue (rien de renvoyé si la suspension de tâche est désactivée)

Retours :

NUSE_SUCCESS – l'appel s'est terminé avec succès

NUSE_INVALID_POOL – l'index du pool de partitions n'est pas valide

NUSE_INVALID_POINTER – un ou plusieurs paramètres du pointeur sont invalides

Implémentation Nucleus SE des informations sur le pool de partitions

La mise en œuvre de cet appel d'API est assez simple :

La fonction renvoie l'état du pool de partitions. Ensuite, si le blocage des appels API est activé, le nombre de tâches en attente et l'index de la première sont renvoyés (sinon ces deux paramètres sont mis à 0).

Obtention du nombre de pools de partitions

Cet appel de service renvoie le nombre de pools de partitions configurés dans l'application. Alors que dans Nucleus RTOS, cela variera dans le temps et que la valeur renvoyée représentera le nombre actuel de pools, dans Nucleus SE, la valeur renvoyée est définie au moment de la construction et ne peut pas changer.

Appel d'API Nucleus RTOS pour le nombre de pools de partitions

Cet appel d'API prend en charge la fonctionnalité clé de l'API Nucleus RTOS.

Prototype d'appel de service :

UNSIGNED NU_Established_Partition_Pools(VOID) ;

Paramètres :

Aucun

Retours :

Le nombre de pools de partitions créés dans l'application

Appel API Nucleus SE pour le nombre de pools de partitions

Cet appel d'API prend en charge la fonctionnalité clé de l'API Nucleus RTOS.

Prototype d'appel de service :

U8 NUSE_Partition_Pool_Count(void);

Paramètres :

Aucun

Retours :

Le nombre de pools de partitions configurés dans l'application

Mise en œuvre

La mise en œuvre de cet appel d'API est presque trivialement simple :la valeur du #define symbole NUSE_PARTITION_POOL_NUMBER est renvoyé.


Embarqué

  1. Les avantages et les inconvénients du cloud par rapport aux services internes
  2. Services de gestion de données et de jetons Blockchain Microsoft Azure
  3. Termes et concepts de la mémoire numérique
  4. Structures et classes en C++
  5. Boîtes aux lettres :présentation et services de base
  6. Sémaphores :services utilitaires et structures de données
  7. Sémaphores :introduction et services de base
  8. Groupes d'indicateurs d'événement :services publics et structures de données
  9. Groupes d'indicateurs d'événement :introduction et services de base