Dominando Grupos de Event Flags: Serviços Utilitários e Estruturas de Dados no Nucleus RTOS/SE
Veja a série RTOS Revealed
Este artigo continua a análise dos event flag groups.
Serviços Utilitários de Event Flag Group
Nucleus RTOS fornece três chamadas de API dedicadas que simplificam interação com event flag groups: recuperar informação detalhada do grupo, obter contagem total de grupos, e acessar ponteiros para todos grupos na aplicação. As duas primeiras funções são totalmente suportadas no Nucleus SE.
Informação de Event Flag Group
Esta chamada de serviço entrega dados-chave sobre grupo de event flags especificado. No Nucleus SE a interface é reduzida — nomeação de objeto e ordenação de suspensão omitidas, e informação de task suspend retornada apenas quando feature habilitada.
Chamada de API Nucleus RTOS para Informação de Event Group
Protótipo da chamada de serviço:
STATUS NU_Event_Group_Information(NU_EVENT_GROUP *group,
CHAR *name, UNSIGNED *event_flags, UNSIGNED *tasks_waiting,
NU_TASK **first_task);
Parâmetros:
group – ponteiro para bloco de controle do event flag group fornecido pelo usuário
name – buffer de 8 caracteres para nome do grupo (incluindo terminador null)
event_flags – ponteiro para variável que receberá valor atual das flags
tasks_waiting – ponteiro para variável que receberá número de tarefas suspensas neste grupo
first_task – ponteiro para variável NU_TASK que receberá ponteiro para primeira tarefa suspensa
Retornos:
NU_SUCCESS – chamada completada com sucesso
NU_INVALID_GROUP – ponteiro de grupo fornecido inválido
Chamada de API Nucleus SE para Informação de Event Group
Esta API fornece mesma funcionalidade central que contraparte RTOS.
Protótipo da chamada de serviço:
STATUS NUSE_Event_Group_Information(NUSE_EVENT_GROUP group,
U8 *event_flags, U8 *tasks_waiting, NUSE_TASK *first_task);
Parâmetros:
group – índice do event flag group
event_flags – ponteiro para receber valor atual das flags
tasks_waiting – ponteiro para receber número de tarefas suspensas (0 se task suspend desabilitado)
first_task – ponteiro para receber índice da primeira tarefa suspensa (0 se task suspend desabilitado)
Retornos:
NUSE_SUCCESS – chamada completada com sucesso
NUSE_INVALID_GROUP – índice de grupo inválido
Implementação Nucleus SE de Informação de Event Group
Implementação é direta: valor atual da flag é lido, e se blocking APIs habilitadas, waiting-task count e first-task index são computados; caso contrário ambos zerados.
*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
Obtendo Número de Event Flag Groups
No Nucleus RTOS, número de grupos pode mudar dinamicamente; chamada retorna contagem atual. No Nucleus SE, contagem é fixa em tempo de build.
Chamada de API Nucleus RTOS para Contagem de Event Flag Groups
Protótipo da chamada de serviço:
UNSIGNED NU_Established_Event_Groups(VOID);
Retorna: Número atual de event flag groups criados na aplicação.
Chamada de API Nucleus SE para Contagem de Event Flag Groups
Protótipo da chamada de serviço:
U8 NUSE_Event_Group_Count(void);
Retorna: Número de event flag groups configurados na aplicação.
Implementação Nucleus SE de Contagem de Event Flag Groups
Função simplesmente retorna valor da constante de compilação NUSE_EVENT_GROUP_NUMBER.
Semáforos no Nucleus SE: Visão Geral, Configuração e APIs Essenciais
Grupos de Event Flags no Nucleus SE: Guia Introdutório de Configuração e Uso da API
Integrado
- Nuvem vs. Servidores In-House: Escolhendo a Solução de Hospedagem Certa
- Microsoft Azure Anuncia Serviços de Tokenização Blockchain e Gerenciamento de Dados
- Estruturas vs Classes em C++: Guia Prático para Desenvolvedores Embarcados
- Mailboxes no Nucleus SE: Guia Prático de Configuração e Uso
- Semáforos no Nucleus RTOS: Serviços Utilitários e Estruturas de Dados
- Semáforos no Nucleus SE: Visão Geral, Configuração e APIs Essenciais
- Grupos de Event Flags no Nucleus SE: Guia Introdutório de Configuração e Uso da API
- Queues no Nucleus SE: Introdução e Chamadas de Serviço Centrais
- Apacer Lança Globalmente Cartões Flash CV110-SD e CV110-MSD de Alto Desempenho
- OpenHW Group Lança Família CORE-V de Processor Cores Open-Source