Memória de partição:serviços utilitários e estruturas de dados
Veja a série RTOS Revelado
Este artigo continua a examinar a memória da partição RTOS.
Serviços utilitários de pool de partição
O Nucleus RTOS tem três chamadas API que fornecem funções utilitárias associadas aos pools de partição:retornar informações sobre um pool de partição, retornar o número de pools de partição no aplicativo e retornar ponteiros para todos os pools de partição no aplicativo. Os dois primeiros são implementados no Nucleus SE.
Obtenção de informações do pool de partição
Esta chamada de serviço obtém uma seleção de informações sobre um pool de partição. A implementação do Nucleus SE difere do Nucleus RTOS porque retorna menos informações, pois a nomenclatura de objetos e a ordem de suspensão não são suportadas e a suspensão de tarefas pode não estar ativada.
Nucleus RTOS API Call for Partition Pool Information
Protótipo de chamada de serviço:
STATUS NU_Partition_Pool_Information (NU_PARTITION_POOL * pool, CHAR * name, VOID ** start_address, UNSIGNED * pool_size, UNSIGNED * partition_size, UNSIGNED * disponível, UNSIGNED * alocado, OPTION * suspend_type, UNSIGNED * first_waiting, NU_TASK) / forte>
Parâmetros:
piscina - ponteiro para o pool de partição sobre o qual as informações estão sendo solicitadas
nome - ponteiro para uma área de destino de 8 caracteres para o nome do pool de partição; isso inclui espaço para o terminador nulo.
start_address - um ponteiro para uma variável, que receberá um ponteiro para o início da área de dados do pool de partição
pool_size - um ponteiro para uma variável, que receberá o tamanho do pool de partição (em bytes)
partition_size - um ponteiro para uma variável, que receberá o tamanho das partições neste pool
disponível - um ponteiro para uma variável, que receberá o número de partições atualmente disponíveis neste pool
alocado - um ponteiro para uma variável, que receberá o número de partições atualmente em uso neste pool
suspend_type - ponteiro para uma variável para manter o tipo de suspensão de tarefa; os tipos de suspensão de tarefa válidos são NU_FIFO e NU_PRIORITY .
tasks_waiting - um ponteiro para uma variável que receberá o número de tarefas suspensas neste pool de partição
first_task - um ponteiro para um ponteiro de tarefa no qual é colocado o ponteiro da primeira tarefa suspensa
Retorna:
NU_SUCCESS - a chamada foi completada com sucesso
NU_INVALID_POOL - o ponteiro do pool de partição não é válido
Chamada de API do Nucleus SE para informações sobre o pool de partição
Esta chamada de API oferece suporte à funcionalidade principal da API Nucleus RTOS.
Protótipo de chamada de serviço:
STATUS NUSE_Partition_Pool_Information (NUSE_PARTITION_POOL pool, ADDR * start_address, U32 * pool_size, U16 * partition_size, U8 * available, U8 * alocado, U8 * tasks_waiting, NUSE_TASK * first_task)
Parâmetros:
piscina - o índice do pool de partição sobre o qual as informações estão sendo solicitadas
start_address - um ponteiro para uma variável, que receberá um ponteiro para o início da área de dados do pool de partição
pool_size - um ponteiro para uma variável, que receberá o tamanho do pool de partição (em bytes)
partition_size - um ponteiro para uma variável, que receberá o tamanho das partições neste pool
disponível - um ponteiro para uma variável, que receberá o número de partições atualmente disponíveis neste pool
alocado - um ponteiro para uma variável, que receberá o número de partições atualmente em uso neste pool
tasks_waiting - um ponteiro para uma variável que receberá o número de tarefas suspensas neste pool de partição (nada retornado se a suspensão da tarefa for desativada)
first_task - um ponteiro para uma variável do tipo NUSE_TASK que receberá o índice da primeira tarefa suspensa (nada retornado se a suspensão da tarefa for desativada)
Retorna:
NUSE_SUCCESS - a chamada foi completada com sucesso
NUSE_INVALID_POOL - o índice do pool de partição não é válido
NUSE_INVALID_POINTER - um ou mais dos parâmetros do ponteiro são inválidos
Implementação do Núcleo SE de Informações do Pool de Partições
A implementação desta chamada de API é bastante direta:
A função retorna o status do pool de partição. Então, se o bloqueio de chamadas de API estiver habilitado, o número de tarefas em espera e o índice da primeira são retornados (caso contrário, esses dois parâmetros são definidos como 0).
Obtenção do número de pools de partição
Esta chamada de serviço retorna o número de pools de partição configurados no aplicativo. Enquanto no Nucleus RTOS isso irá variar com o tempo e o valor retornado representará o número atual de pools, no Nucleus SE o valor retornado é definido no momento da construção e não pode ser alterado.
Nucleus RTOS API Call for Number of Partition Pools
Esta chamada de API oferece suporte à funcionalidade principal da API Nucleus RTOS.
Protótipo de chamada de serviço:
UNSIGNED NU_Established_Partition_Pools (VOID);
Parâmetros:
Nenhum
Retorna:
O número de pools de partição criados no aplicativo
Chamada de API do Nucleus SE para o número de pools de partição
Esta chamada de API oferece suporte à funcionalidade principal da API Nucleus RTOS.
Protótipo de chamada de serviço:
U8 NUSE_Partition_Pool_Count (void);
Parâmetros:
Nenhum
Retorna:
O número de pools de partição configurados no aplicativo
Implementação
A implementação desta chamada de API é quase trivialmente simples:o valor de #define símbolo NUSE_PARTITION_POOL_NUMBER é devolvido.
Integrado
- Os prós e contras da nuvem versus serviços internos
- Token Blockchain e Serviços de Gerenciamento de Dados do Microsoft Azure
- Termos e conceitos de memória digital
- Microprocessadores
- Estruturas e classes em C ++
- Caixas de correio:introdução e serviços básicos
- Semáforos:serviços utilitários e estruturas de dados
- Semáforos:introdução e serviços básicos
- Grupos de sinalizadores de evento:serviços de utilidade e estruturas de dados
- Grupos de sinalizadores de evento:introdução e serviços básicos