Nucleus Plus
Ein bereits deutlich umfangreicheres, aber auch größeres, Echtzeit-Betriebssystem ist NUCLEUS PLUS von Accelerated Technology Inc. Da es Royality-Free aber eben nicht FREE ist, kann hier nur eine kleine Funktionsübersicht (white-paper) wiedergegeben werden.
Eines der möglichen Erweiterungsmodule ist NUCLEUS FILE, durch das ein MS-DOS 4.0 kompatibles File-System auf unterschiedlichsten Speichermedien aufgebaut werden kann.
Kerneldienste des NUCLEUS PLUS (Kurzform)
Die hier aufgeführte Funktionsübersicht dient einzig als Kurzübersicht. Für detailierte Informationen ist einzig das "Reference Manual" zuständig.
Task-Control: | |
NU_Change_Preemption | Preemption des laufenden Tasks ändern |
NU_Change_Priority | Priorität eines Tasks ändern |
NU_Change_Time_Slice | Time-Slice eines Tasks ändern |
NU_Check_Stack | Prüft den Stack des laufenden Tasks |
NU_Create_Task | Anlegen eines Tasks |
NU_Current_Task_Pointer | Gibt Zeiger auf TCB des laufenden Tasks |
NU_Delete_Task | Löscht TCB eines Tasks aus der Liste |
NU_Established_Tasks | Gibt Anzahl Tasks zurück |
NU_Relinquish | Erlaubt anderen Tasks mit gleicher Priorität zu laufen bis time-slice |
NU_Reset_Task | Neustart eines beendeten oder terminierten Tasks |
NU_Resume_Task | Wiederaufwecken eines suspendierten Tasks |
NU_Sleep | Legt laufenden Task für bestimmte Zeit schlafen |
NU_Suspend_Task | Suspendiert einen Task |
NU_Task_Information | Gibt Informationen über einen Tasks zurück |
NU_Task_Pointers | Gibt Liste aktiver Tasks mit TCB's zurück |
NU_Terminate_Task | Terminiert einen Task |
Dynamic-Memory: | |
NU_Allocate_Memory | Allokieren von Speicher |
NU_Create_Memory_Pool | Erzeugen des Speicherpools |
NU_Deallocate_Memory | Freigeben von allokiertem Speicher |
NU_Delete_Memory_Pool | Löschen eines erzeugten Speicherpools |
NU_Established_Memory_Pools | Gibt Anzahl der erzeugten Speicherpools |
NU_Memory_Pool_Information | Gibt Informationen über einen Speicherpool |
NU_Memory_Pool_Pointers | Gibt Liste belegter Speicherblöcke |
Partition-Memory: | |
NU_Allocate_Partition | Allokieren einer Speicherpartition |
NU_Create_Parition_Pool | Erzeugen eines Partitionspools |
NU_Deallocate_Partition | Freigeben einer allokiertem Speicherpartition |
NU_Delete_Partition_Pool | Löschen eines erzeugten Patitionspools |
NU_Established_Partition_Pools | Gibt Anzahl der erzeugten Patitionspools |
NU_Partition_Pool_Information | Gibt Informationen über einen Patitionspool |
NU_Partition_Pool_Pointers | Gibt Liste belegter Partitionsblöcke |
Mailboxes: | |
NU_Broadcast_To_Mailbox | Sendet Daten an alle Empfänger dieser Mailbox |
NU_Create_Mailbox | Erzeuge Mailbox |
NU_Delete_Mailbox | Löscht eine erzeugte Mailbox |
NU_Established_Mailboxes | Gibt Anzahl erzeugter Mailboxen |
NU_Mailbox_Information | Gibt Informationen über eine Mailbox |
NU_Mailbox_Pointers | Gibt Liste bekannter Mailboxen |
NU_Receive_From_Mailbox | Wartet auf Daten aus einer Mailbox |
NU_Reset_Mailbox | Setzt den MCB zurück |
NU_Send_To_Mailbox | Sendet Daten an ersten/höchstpriorisierten Empfänger dieser Mailbox |
Queues: | |
NU_Broadcast_To_Queue | Sendet Daten an alle Empfänger dieser Queue |
NU_Create_Queue | Erzeugt Queue |
NU_Delete_Queue | Löscht eine erzeugte Queue |
NU_Established_Queues | Gibt Anzahl erzeugter Queues |
NU_Queue_Information | Gibt Informationen über eine Queue |
NU_Queue_Pointers | Gibt Liste bekannter Queues |
NU_Receive_From_Queue | Wartet auf Daten aus einer Queue |
NU_Reset_Queue | Setzt den QCB zurück |
NU_Send_To_Front_Of_Queue | Sendet Daten an den Anfang einer Queue |
NU_Send_To_Queue | Sendet Daten in eine Queue |
Pipes: | |
NU_Broadcast_To_Pipe | Sendet Daten an alle Empfänger dieser Pipe |
NU_Create_Pipe | Erzeugt Pipe |
NU_Delete_Pipe | Löscht eine erzeugte Pipe |
NU_Established_Pipes | Gibt Anzahl erzeugter Pipes |
NU_Pipe_Information | Gibt Informationen über eine Pipe |
NU_Pipe_Pointers | Gibt Liste bekannter Pipes |
NU_Receive_From_Pipe | Wartet auf Daten aus einer Pipe |
NU_Reset_Pipe | Setzt den PCB zurück |
NU_Send_To_Front_Of_Pipe | Sendet Daten an den Anfang einer Pipe |
NU_Send_To_Pipe | Sendet Daten in eine Pipe |
Semaphores: | |
NU_Create_Semaphore | Erzeugt Semaphore |
NU_Delete_Semaphore | Löscht eine erzeugte Semaphore |
NU_Established_Semaphores | Gibt Anzahl erzeugter Semaphoren |
NU_Obtain_Semaphore | Belegt eine Semaphore |
NU_Release_Semaphore | Freigabe einer belegten Semaphore |
NU_Reset_Semaphore | Setzt den SCB zurück |
NU_Semaphore_Information | Gibt Informationen über eine Semaphore |
NU_Semaphore_Pointers | Gibt Liste bekannter Semaphoren |
Event-Groups: | |
NU_Create_Event_Group | Erzeugt Eventgruppe |
NU_Delete_Event_Group | Löscht eine erzeugte Evengruppe |
NU_Established_Event_Groups | Gibt Anzahl erzeugter Eventgruppen |
NU_Event_Group_Information | Gibt Informationen über eine Eventgruppe |
NU_Event_Group_Pointers | Gibt Liste bekannter Eventgruppen |
NU_Retrieve_Events | Wartet auf das Eintreffen eines oder mehrere Events einer Eventgruppe |
NU_Set_Events | Setzt ein/mehrere Events einer Evengruppe |
Signals: | |
NU_Control_Signals | Ausmaskieren von Signalen |
NU_Receive_Signals | Abfrage der Signale und Löschen |
NU_Register_Signal_Handler | Erzeugt Signal-Handler der, gestartet wird, sobald das entsprechende Signal gesendet wurde |
NU_Send_Signals | Sendet Signal an einen Task |
Timers: | |
NU_Control_Timer | Enable/disable eines Timers |
NU_Create_Timer | Erzeugt einen Timer |
NU_Delete_Timer | Löscht einen erzeugten Timer |
NU_Established_Timers | Gibt Anzahl erzeugter Timer |
NU_Reset_Timer | Setzt den Timer-CB zurück |
NU_Retrieve_Clock | System-Timer abfragen |
NU_Set_Clock | System-Timer setzten |
NU_Timer_Information | Gibt Informationen über einen Timer |
NU_Timer_Pointers | Gibt Liste bekannter Timer |
Interrupts: | |
NU_Activiate_HISR | Startet erzeugte HISR (nach Ende LISR) |
NU_Control_Interrupts | Enable/disable(/Level) Interrupts |
NU_Create_HISR | Erzeuge eine HISR |
NU_Current_HISR_Pointer | Gibt Zeiger auf TCB der laufenden HISR |
NU_Delete_HISR | Löscht eine erzeugte HISR |
NU_Established_HISRs | Gibt Anzahl erzeugter HISR's |
NU_HISR_Information | Gibt Informationen über eine HISR |
NU_HISR_Pointers | Gibt Liste bekannter HISR's |
NU_Local_Control_Interrupts | Eanble/disable(/Level) Interrupts aber nur bis zum nächsten Context-Wechsel |
NU_Register_LISR | Erzeugt eine LISR durch Eintrag in Vectortabelle |
NU_Setup_Vector | Eintragung einer unmanaged-ISR (Assembler-ISR) |
System-Diagnostics: | |
NU_Disable_History_Saving | Disable History-schreiben |
NU_Enable_History_Saving | Enable History-schreiben |
NU_Licence_Information | Gibt Lizenz-Information |
NU_Make_History_Entry | Schreibt Eintrag in History |
NU_Release_Information | Gibt Release-Information |
NU_Retrieve_History_Entry | Gibt ersten Histor-Eintrag und löscht diesen in der Tabelle |
I/O-Drivers: | |
NU_Create_Driver | Erzeugt einen I/O-Treiber |
NU_Delete_Driver | Löscht einen erzeugten I/O-Treiber |
NU_Driver_Pointers | Gibt Liste bekannter I/O-Treiber |
NU_Established_Drivers | Gibt Anzahl erzeugter I/O-Treiber |
NU_Protect | Schutz von Teilen über einen Protector |
NU_Request_Driver | Sendet die request-struktur an einen I/O-Treiber |
NU_Resume_Driver | Weckt einen Task wieder auf, der durch "Suspend_Driver" suspendiert ist |
NU_Suspend_Driver | Suspendiert den Task, der den I/O-Treiber verwendet |
NU_Unprotect | Schutz über einen Protector aufheben |
Error-Codes:
Name | Decimal_Value | Hex_Value |
NU_END_OF_LOG | -1 | FFFFFFFF |
NU_GROUP_DELETED | -2 | FFFFFFFE |
NU_INVALID_DELETE | -3 | FFFFFFFD |
NU_INVALID_DRIVER | -4 | FFFFFFFC |
NU_INVALID_ENABLE | -5 | FFFFFFFB |
NU_INVALID_ENTRY | -6 | FFFFFFFA |
NU_INVALID_FUNCTION | -7 | FFFFFFF9 |
NU_INVALID_GROUP | -8 | FFFFFFF8 |
NU_INVALID_HISR | -9 | FFFFFFF7 |
NU_INVALID_MAILBOX | -10 | FFFFFFF6 |
NU_INVALID_MEMORY | -11 | FFFFFFF5 |
NU_INVALID_MESSAGE | -12 | FFFFFFF4 |
NU_INVALID_OPERATION | -13 | FFFFFFF3 |
NU_INVALID_PIPE | -14 | FFFFFFF2 |
NU_INVALID_POINTER | -15 | FFFFFFF1 |
NU_INVALID_POOL | -16 | FFFFFFF0 |
NU_INVALID_PREEMPT | -17 | FFFFFFEF |
NU_INVALID_PRIORITY | -18 | FFFFFFEE |
NU_INVALID_QUEUE | -19 | FFFFFFED |
NU_INVALID_RESUME | -20 | FFFFFFEC |
NU_INVALID_SEMAPHORE | -21 | FFFFFFEB |
NU_INVALID_SIZE | -22 | FFFFFFEA |
NU_INVALID_START | -23 | FFFFFFE9 |
NU_INVALID_SUSPEND | -24 | FFFFFFE8 |
NU_INVALID_TASK | -25 | FFFFFFE7 |
NU_INVALID_TIMER | -26 | FFFFFFE6 |
NU_INVALID_VECTOR | -27 | FFFFFFE5 |
NU_MAILBOX_DELETED | -28 | FFFFFFE4 |
NU_MAILBOX_EMPTY | -29 | FFFFFFE3 |
NU_MAILBOX_FULL | -30 | FFFFFFE2 |
NU_MAILBOX_RESET | -31 | FFFFFFE1 |
NU_NO_MEMORY | -32 | FFFFFFE0 |
NU_NO_MORE_LISRS | -33 | FFFFFFDF |
NU_NO_PARTITION | -34 | FFFFFFDE |
NU_NOT_DISABLED | -35 | FFFFFFDD |
NU_NOT_PRESENT | -36 | FFFFFFDC |
NU_NOT_REGISTERED | -37 | FFFFFFDB |
NU_NOT_TERMINATED | -38 | FFFFFFDA |
NU_PIPE_DELETED | -39 | FFFFFFD9 |
NU_PIPE_EMPTY | -40 | FFFFFFD8 |
NU_PIPE_FULL | -41 | FFFFFFD7 |
NU_PIPE_RESET | -42 | FFFFFFD6 |
NU_POOL_DELETED | -43 | FFFFFFD5 |
NU_QUEUE_DELETED | -44 | FFFFFFD4 |
NU_QUEUE_EMPTY | -45 | FFFFFFD3 |
NU_QUEUE_FULL | -46 | FFFFFFD2 |
NU_QUEUE_RESET | -47 | FFFFFFD1 |
NU_SEMAPHORE_DELETED | -48 | FFFFFFD0 |
NU_SEMAPHORE_RESET | -49 | FFFFFFCF |
NU_TIMEOUT | -50 | FFFFFFCE |
NU_UNAVAILABLE | -51 | FFFFFFCD |
Tip zu ASM-ISR's:
* Um Assembler-ISR's im Nucleus manuell zu integrieren (sogenannte "unmanaged-ISRs"), muß bei Einsprung in die ISR folgender Startcode implementiert werden: (Beispiel x86)
und am Ende der ISR:
* Um aus Assembler-ISR's eine HISR (High-Interrupt-Service-Routine) zu rufen (installieren), muß in die ISR folgender Aufruf implementiert werden: (Beispiel x86)
Stand: 03/2001