Dominando grupos de banderas de evento: Servicios de utilidad y estructuras de datos en Nucleus RTOS/SE
Ver la serie RTOS Revealed
Este artículo continúa la mirada a los grupos de banderas de evento.
Servicios de Utilidad de Grupos de Banderas de Evento
Nucleus RTOS proporciona tres llamadas API dedicadas que agilizan la interacción con grupos de banderas de evento: recuperar información detallada del grupo, obtener el conteo total de grupos y acceder a punteros a todos los grupos dentro de una aplicación. Las dos primeras funciones están completamente soportadas en Nucleus SE.
Información de Grupo de Banderas de Evento
Esta llamada de servicio entrega datos clave sobre un grupo de banderas de evento especificado. En Nucleus SE la interfaz es recortada –el nombramiento de objetos y orden de suspensión se omiten, y la información de suspensión de tareas se retorna solo cuando la característica está habilitada.
Llamada API de Nucleus RTOS para Información de Grupo de Evento
Prototipo de llamada de servicio:
STATUS NU_Event_Group_Information(NU_EVENT_GROUP *group,
CHAR *name, UNSIGNED *event_flags, UNSIGNED *tasks_waiting,
NU_TASK **first_task);
Parámetros:
group – puntero al bloque de control del grupo de banderas de evento suministrado por el usuario
name – buffer de 8 caracteres para el nombre del grupo (incluyendo terminador nulo)
event_flags – puntero a variable que recibirá el valor actual de banderas
tasks_waiting – puntero a variable que recibirá el número de tareas suspendidas en este grupo
first_task – puntero a variable NU_TASK que recibirá un puntero a la primera tarea suspendida
Retorna:
NU_SUCCESS – llamada completada con éxito
NU_INVALID_GROUP – puntero de grupo suministrado es inválido
Llamada API de Nucleus SE para Información de Grupo de Evento
Esta API proporciona la misma funcionalidad central que su contraparte RTOS.
Prototipo de llamada de servicio:
STATUS NUSE_Event_Group_Information(NUSE_EVENT_GROUP group,
U8 *event_flags, U8 *tasks_waiting, NUSE_TASK *first_task);
Parámetros:
group – índice del grupo de banderas de evento
event_flags – puntero para recibir el valor actual de banderas
tasks_waiting – puntero para recibir el número de tareas suspendidas (0 si la suspensión de tareas está deshabilitada)
first_task – puntero para recibir el índice de la primera tarea suspendida (0 si la suspensión de tareas está deshabilitada)
Retorna:
NUSE_SUCCESS – llamada completada con éxito
NUSE_INVALID_GROUP – índice de grupo es inválido
Implementación de Nucleus SE para Información de Grupo de Evento
La implementación es directa: se lee el valor actual de banderas y, si las APIs de bloqueo están habilitadas, se calculan el conteo de tareas en espera y el índice de la primera tarea; de lo contrario ambos se establecen a 0.
*event_flags = NUSE_Event_Group_Data[group];#if NUSE_BLOCKING_ENABLE *tasks_waiting = NUSE_Event_Group_Blocking_Count[group]; if (NUSE_Event_Group_Blocking_Count[group] != 0) { U8 index; for (index=0; index
Obtención del Número de Grupos de Banderas de Evento
En Nucleus RTOS, el número de grupos puede cambiar dinámicamente; la llamada retorna el conteo actual. En Nucleus SE, el conteo es fijo en tiempo de compilación.
Llamada API de Nucleus RTOS para Conteo de Grupos de Banderas de Evento
Prototipo de llamada de servicio:
UNSIGNED NU_Established_Event_Groups(VOID);
Retorna:
El número actual de grupos de banderas de evento creados en la aplicación
Llamada API de Nucleus SE para Conteo de Grupos de Banderas de Evento
Prototipo de llamada de servicio:
U8 NUSE_Event_Group_Count(void);
Retorna:
El número de grupos de banderas de evento configurados en la aplicación
Implementación de Nucleus SE para Conteo de Grupos de Banderas de Evento
La función simplemente retorna el valor de la constante en tiempo de compilación NUSE_EVENT_GROUP_NUMBER.
Semaforos en Nucleus SE: Visión general, configuración y API esenciales
Grupos de banderas de evento en Nucleus SE: Guía introductoria de configuración y uso de API
Incrustado
- Estructuras vs Clases en C++: Guía práctica para desarrolladores embebidos
- Buzones en Nucleus SE: Guía práctica de configuración y uso
- Semaforos en Nucleus RTOS: Servicios de utilidad y estructuras de datos
- Semaforos en Nucleus SE: Visión general, configuración y API esenciales
- Grupos de banderas de evento en Nucleus SE: Guía introductoria de configuración y uso de API
- Colas en Nucleus SE: Introducción y llamadas de servicio principales
- Apacer lanza tarjetas flash CV110‑SD y CV110‑MSD de alto rendimiento globales
- OpenHW Group lanza familia CORE‑V de núcleos procesadores open‑source
- Swissbit muestra seguridad hardware de vanguardia para dispositivos IoT en it‑sa
- Cloud vs. servidores on-premise: eligiendo la solución de hosting adecuada
- Microsoft Azure anuncia servicios de tokenización Blockchain y gestión de datos