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
- Die Vor- und Nachteile von Cloud- und Inhouse-Diensten
- Microsoft Azure' Blockchain Token und Datenverwaltungsdienste
- Begriffe und Konzepte des digitalen Speichers
- Mikroprozessoren
- Strukturen und Klassen in C++
- Postfächer:Einführung und grundlegende Dienste
- Semaphoren:Versorgungsdienste und Datenstrukturen
- Semaphoren:Einführung und grundlegende Dienste
- Ereigniskennzeichengruppen:Versorgungsdienste und Datenstrukturen
- Ereignisflaggengruppen:Einführung und grundlegende Dienste