Event flag-groepen:nutsvoorzieningen en datastructuren
Bekijk de RTOS Revealed-serie
Dit artikel gaat verder met het bekijken van gebeurtenisvlaggroepen.
Event Flag Group Utility Services
Nucleus RTOS heeft drie API-aanroepen die hulpprogramma's bieden die zijn gekoppeld aan gebeurtenisvlaggroepen:informatie over een groep retourneren, het aantal gebeurtenisvlaggroepen in de toepassing retourneren en verwijzingen naar alle groepen in de toepassing. De eerste twee hiervan zijn geïmplementeerd in Nucleus SE.
Informatie over gebeurtenisvlaggen
Deze serviceaanroep verkrijgt een selectie van informatie over een gebeurtenisvlaggroep. De Nucleus SE-implementatie verschilt van Nucleus RTOS doordat deze minder informatie retourneert, omdat objectnaamgeving en volgorde opschorten niet worden ondersteund en taakonderbreking mogelijk niet is ingeschakeld.
Nucleus RTOS API-oproep voor informatie over gebeurtenisgroepen
Serviceoproep prototype:
STATUS NU_Event_Group_Information(NU_EVENT_GROUP *group,
CHAR *name, UNSIGNED *even t_flags, UNSIGNED *tasks_waiting,
NU_TASK **first_task);
Parameters:
groep – pointer naar het door de gebruiker geleverde gebeurtenisvlaggroepbesturingsblok
naam – verwijzing naar een bestemmingsgebied van 8 tekens voor de naam van de gebeurtenisvlaggroep; dit is inclusief ruimte voor de nulterminator
event_flags – een verwijzing naar een variabele, die de huidige waarde van de gespecificeerde gebeurtenisvlaggroep zal ontvangen
tasks_waiting – een verwijzing naar een variabele die het aantal taken zal ontvangen die zijn opgeschort voor deze gebeurtenisvlaggroep
first_task – een verwijzing naar een variabele van het type NU_TASK die een verwijzing naar de eerste onderbroken taak ontvangt
Retourneren:
NU_SUCCESS – het gesprek is succesvol afgerond
NU_INVALID_GROUP – de aanwijzer van de gebeurtenisvlaggroep is niet geldig
Nucleus SE API-oproep voor informatie over gebeurtenisgroepen
Deze API-aanroep ondersteunt de belangrijkste functionaliteit van de Nucleus RTOS API.
Serviceoproep prototype:
STATUS NUSE_Event_Group_Information(NUSE_EVENT_GROUP groep,
U8 *event_flags, U8 *tasks_waiting, NUSE_TASK *first_task);
Parameters:
groep – de index van de gebeurtenisvlaggroep waarover informatie wordt gevraagd
event_flags – een verwijzing naar een variabele, die de huidige waarde van de gespecificeerde gebeurtenisvlaggroep zal ontvangen
tasks_waiting – een verwijzing naar een variabele die het aantal taken zal ontvangen dat is opgeschort voor deze gebeurtenisvlaggroep (niets geretourneerd als taakonderbreking is uitgeschakeld)
first_task – een verwijzing naar een variabele van het type NUSE_TASK die de index van de eerste onderbroken taak zal ontvangen (niets geretourneerd als taakonderbreking is uitgeschakeld)
Retourneren:
NUSE_SUCCESS – het gesprek is succesvol afgerond
NUSE_INVALID_GROUP – de gebeurtenisvlaggroepsindex is niet geldig
Nucleus SE-implementatie van informatie over evenementengroepen
De implementatie van deze API-aanroep is vrij eenvoudig:
*event_flags =NUSE_Event_Group_Data[groep]; #if NUSE_BLOCKING_ENABLE *tasks_waiting =NUSE_Event_Group_Blocking_Count[groep]; if (NUSE_Event_Group_Blocking_Count[groep] !=0) { U8 index; for (index=0; indexDe functie retourneert de waarde van de gebeurtenisvlaggroep. Als het blokkeren van API-aanroepen is ingeschakeld, wordt het aantal wachtende taken en de index van de eerste geretourneerd (anders worden deze twee parameters op 0 gezet).
Het aantal gebeurtenisvlaggroepen verkrijgen
Deze serviceaanroep retourneert het aantal gebeurtenisvlaggroepen dat in de toepassing is geconfigureerd. Terwijl dit in Nucleus RTOS in de loop van de tijd zal variëren en de geretourneerde waarde het huidige aantal groepen vertegenwoordigt, wordt in Nucleus SE de geretourneerde waarde ingesteld tijdens het bouwen en kan deze niet veranderen.
Nucleus RTOS API-aanroep voor telling van gebeurtenisvlaggroepen
Serviceoproep prototype:
UNSIGNED NU_Established_Event_Groups(VOID);
Parameters:
Geen
Retourneren:
Het huidige aantal aangemaakte gebeurtenisvlaggroepen in de applicatie
Nucleus SE API-aanroep voor telling van gebeurtenisvlaggroepen
Deze API-aanroep ondersteunt de belangrijkste functionaliteit van de Nucleus RTOS API.
Serviceoproep prototype:
U8 NUSE_Event_Group_Count(void);
Parameters:
Geen
Retourneren:
Het aantal geconfigureerde gebeurtenisvlaggroepen in de applicatie
Nucleus SE-implementatie van het tellen van gebeurtenisvlaggen
De implementatie van deze API-aanroep is bijna triviaal eenvoudig:de waarde van de #define symbool NUSE_EVENT_GROUP_NUMBER wordt geretourneerd.
Ingebed
- De voor- en nadelen van cloud versus interne services
- Microsoft Azure' Blockchain Token en Data Management Services
- Structuren en klassen in C++
- Mailboxen:introductie en basisservices
- Semaphores:nutsvoorzieningen en datastructuren
- Semaphores:introductie en basisdiensten
- Event flag-groepen:introductie en basisservices
- Wachtrijen:introductie en basisservices
- Apacer:CV110-SD- en CV110-MSD-kaarten wereldwijd gelanceerd
- OpenHW Group creëerde en kondigt CORE-V-familie van open-source cores aan
- Swissbit:op hardware gebaseerde beveiligingsoplossingen om gegevens en apparaten te beschermen