Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial Internet of Things >> Eingebettet

Partitionsspeicher:Dienstprogramme und Datenstrukturen


RTOS Revealed-Serie anzeigen

Dieser Artikel setzt den Blick auf den RTOS-Partitionsspeicher fort.

Partition Pool Utility Services

Nucleus RTOS verfügt über drei API-Aufrufe, die mit Partitionspools verknüpfte Dienstprogrammfunktionen bereitstellen:Informationen über einen Partitionspool zurückgeben, die Anzahl der Partitionspools in der Anwendung zurückgeben und Zeiger auf alle Partitionspools in der Anwendung zurückgeben. Die ersten beiden davon sind in Nucleus SE implementiert.

Informationen zu Partitionspools abrufen

Dieser Serviceaufruf ruft eine Auswahl von Informationen über einen Partitionspool ab. Die Nucleus SE-Implementierung unterscheidet sich von Nucleus RTOS dadurch, dass sie weniger Informationen zurückgibt, da Objektbenennung und Suspend-Reihenfolge nicht unterstützt werden und Task Suspend möglicherweise nicht aktiviert ist.

Nucleus RTOS API-Aufruf für Partitionspool-Informationen

Prototyp für Serviceruf:

STATUS NU_Partition_Pool_Information(NU_PARTITION_POOL *pool, CHAR  *name, VOID **start_address, UNSIGNED *pool_size, UNSIGNED *partition_size, UNSIGNED *verfügbar, UNSIGNED *allocated, OPTION  *suspend_type, UNSIGNED *tasks_waiting , **firstNU_tasks_waiting , **first /strong>

Parameter:

Pool – Zeiger auf den Partitionspool, über den Informationen angefordert werden

Name – Zeiger auf einen 8-stelligen Zielbereich für den Namen des Partitionspools; dies beinhaltet Platz für den Null-Terminator.

start_address – ein Zeiger auf eine Variable, die einen Zeiger auf den Anfang des Partitionspool-Datenbereichs erhält

pool_size – ein Zeiger auf eine Variable, die die Größe des Partitionspools (in Bytes) erhält

partition_size – ein Zeiger auf eine Variable, die die Größe der Partitionen in diesem Pool erhält

verfügbar – ein Zeiger auf eine Variable, die die Anzahl der derzeit in diesem Pool verfügbaren Partitionen erhält

zugewiesen – ein Zeiger auf eine Variable, die die Anzahl der derzeit verwendeten Partitionen in diesem Pool erhält

suspend_type – Zeiger auf eine Variable zum Halten des Task-Suspend-Typs; gültige Aufgaben-Aussetzungstypen sind NU_FIFO und NU_PRIORITY .

tasks_waiting – ein Zeiger auf eine Variable, die die Anzahl der in diesem Partitionspool ausgesetzten Tasks empfängt

first_task – ein Zeiger auf einen Taskzeiger, in den der Zeiger der ersten ausgesetzten Task eingefügt wird

Rückgabe:

NU_SUCCESS – der Anruf wurde erfolgreich abgeschlossen

NU_INVALID_POOL – der Partitionspoolzeiger ist nicht gültig

Nucleus SE API-Aufruf für Partitionspool-Informationen

Dieser API-Aufruf unterstützt die Schlüsselfunktionalität der Nucleus RTOS API.

Prototyp für Serviceruf:

STATUS NUSE_Partition_Pool_Information(NUSE_PARTITION_POOL pool, ADDR *start_address, U32 *pool_size, U16 *partition_size, U8 *verfügbar, U8 *zugewiesen, U8 *tasks_waiting, NUSE_TASK *first_task)

Parameter:

Pool – der Index des Partitionspools, über den Informationen angefordert werden

start_address – ein Zeiger auf eine Variable, die einen Zeiger auf den Anfang des Partitionspool-Datenbereichs erhält

pool_size – ein Zeiger auf eine Variable, die die Größe des Partitionspools (in Bytes) erhält

partition_size – ein Zeiger auf eine Variable, die die Größe der Partitionen in diesem Pool erhält

verfügbar – ein Zeiger auf eine Variable, die die Anzahl der derzeit in diesem Pool verfügbaren Partitionen erhält

zugewiesen – ein Zeiger auf eine Variable, die die Anzahl der derzeit verwendeten Partitionen in diesem Pool erhält

tasks_waiting – ein Zeiger auf eine Variable, die die Anzahl der in diesem Partitionspool ausgesetzten Aufgaben empfängt (keine Rückgabe, wenn die Aufgabenaussetzung deaktiviert ist)

first_task – ein Zeiger auf eine Variable vom Typ NUSE_TASK die den Index der ersten ausgesetzten Aufgabe erhält (keine Rückgabe, wenn die Aufgabenaussetzung deaktiviert ist)

Rückgabe:

NUSE_SUCCESS – der Anruf wurde erfolgreich abgeschlossen

NUSE_INVALID_POOL – der Partitionspoolindex ist nicht gültig

NUSE_INVALID_POINTER – einer oder mehrere der Zeigerparameter sind ungültig

Nucleus SE-Implementierung von Partitionspool-Informationen

Die Implementierung dieses API-Aufrufs ist recht einfach:

Die Funktion gibt den Partitionspoolstatus zurück. Wenn das Blockieren von API-Aufrufen aktiviert ist, werden dann die Anzahl der wartenden Tasks und der Index des ersten Tasks zurückgegeben (sonst werden diese beiden Parameter auf 0 gesetzt).

Ermitteln der Anzahl der Partitionspools

Dieser Serviceaufruf gibt die Anzahl der in der Anwendung konfigurierten Partitionspools zurück. Während dies in Nucleus RTOS im Laufe der Zeit schwankt und der zurückgegebene Wert die aktuelle Anzahl von Pools darstellt, wird der zurückgegebene Wert in Nucleus SE zur Build-Zeit festgelegt und kann sich nicht ändern.

Nucleus RTOS API-Aufruf für die Anzahl der Partitionspools

Dieser API-Aufruf unterstützt die Schlüsselfunktionalität der Nucleus RTOS API.

Prototyp für Serviceruf:

UNSIGNED NU_Established_Partition_Pools(VOID);

Parameter:

Keine

Rückgabe:

Die Anzahl der erstellten Partitionspools in der Anwendung

Nucleus SE API-Aufruf für die Anzahl der Partitionspools

Dieser API-Aufruf unterstützt die Schlüsselfunktionalität der Nucleus RTOS API.

Prototyp für Serviceruf:

U8 NUSE_Partition_Pool_Count(void);

Parameter:

Keine

Rückgabe:

Die Anzahl der konfigurierten Partitionspools in der Anwendung

Implementierung

Die Implementierung dieses API-Aufrufs ist fast trivial einfach:Der Wert des #define Symbol NUSE_PARTITION_POOL_NUMBER wird zurückgegeben.


Eingebettet

  1. Die Vor- und Nachteile von Cloud- und Inhouse-Diensten
  2. Microsoft Azure' Blockchain Token und Datenverwaltungsdienste
  3. Begriffe und Konzepte des digitalen Speichers
  4. Mikroprozessoren
  5. Strukturen und Klassen in C++
  6. Postfächer:Einführung und grundlegende Dienste
  7. Semaphoren:Versorgungsdienste und Datenstrukturen
  8. Semaphoren:Einführung und grundlegende Dienste
  9. Ereigniskennzeichengruppen:Versorgungsdienste und Datenstrukturen
  10. Ereignisflaggengruppen:Einführung und grundlegende Dienste