Nucleus Plus



One already clearly more extensive, but also bigger, however, real time operating system is NUCLEUS PLUS of Accelerated Technology Inc. It is Royality-Free but not FREE , only a small function overview (white-paper) can be returned here.

One of the possible expansion modules is NUCLEUS FILE through which a MS-DOS can be based 4.0 compatible File-System on most different storage media.


Kernelservices of the NUCLEUS PLUS (abbreviation)
This here presented function overview only serves as short overview. For detailed information, the "Reference manual" only is responsible.


Task-Control:

NU_Change_Preemption

Preemption of the current Tasks change

NU_Change_Priority

Priority of a Tasks change

NU_Change_Time_Slice

Time-Slice of a Tasks change

NU_Check_Stack

Tests the Stack of the current Tasks

NU_Create_Task

Creating of a Task

NU_Current_Task_Pointer

Gives a pointer on TCB of the current Tasks

NU_Delete_Task

Deletes TCB of a Tasks from the list

NU_Established_Tasks

Returns number of Tasks

NU_Relinquish

Allow other Tasks to run with same priority until time-slice

NU_Reset_Task

Restart of a finished or terminierten Task

NU_Resume_Task

Reawake of a suspended Tasks

NU_Sleep

Put current Task for certain time sleeps

NU_Suspend_Task

Suspends a Task

NU_Task_Information

Returns information about a Tasks

NU_Task_Pointers

Returns a list of active Tasks with TCB's

NU_Terminate_Task

Terminating a Task



Dynamic-Memory:

NU_Allocate_Memory

Allocating of storage

NU_Create_Memory_Pool

Generates of the storage pool

NU_Deallocate_Memory

Release allocated storage

NU_Delete_Memory_Pool

Erasure of a generated storage pool

NU_Established_Memory_Pools

Gives number of the generated storage pools

NU_Memory_Pool_Information

Gives information about a storage pool

NU_Memory_Pool_Pointers

Gives list of busy storage blocks



Partition-Memory:

NU_Allocate_Partition

Allocation of a storagepartition

NU_Create_Parition_Pool

Generates a partitionspool

NU_Deallocate_Partition

Release an allocated storagepartition

NU_Delete_Partition_Pool

Erase a generated partitionspool

NU_Established_Partition_Pools

Gives number of generated partitionspools

NU_Partition_Pool_Information

Gives information about a partitionspool

NU_Partition_Pool_Pointers

Gives list of busy partitionsblocks



Mailboxes:

NU_Broadcast_To_Mailbox

Send data to all recipients of this Mailbox

NU_Create_Mailbox

Generates a Mailbox

NU_Delete_Mailbox

Delete a generated Mailbox

NU_Established_Mailboxes

Gives number of generated Mailboxes

NU_Mailbox_Information

Gives information about a Mailbox

NU_Mailbox_Pointers

Gives a list of known Mailboxes

NU_Receive_From_Mailbox

Wait for data from a Mailbox

NU_Reset_Mailbox

Puts back the MCB

NU_Send_To_Mailbox

Send data to first/higher priority recipients of this Mailbox



Queues:

NU_Broadcast_To_Queue

Send data to all recipients of this Queue

NU_Create_Queue

Generates a Queue

NU_Delete_Queue

Delete a generated Queue

NU_Established_Queues

Gives number of generated Queues

NU_Queue_Information

Gives information about a Queue

NU_Queue_Pointers

Gives list of known Queues

NU_Receive_From_Queue

Wait for data from a Queue

NU_Reset_Queue

Puts back the QCB

NU_Send_To_Front_Of_Queue

Send data to the beginning of a Queue

NU_Send_To_Queue

Send data into a Queue



Pipes:

NU_Broadcast_To_Pipe

Send data to all recipients of this Pipe

NU_Create_Pipe

Generates a Pipe

NU_Delete_Pipe

Delete a generated Pipe

NU_Established_Pipes

Gives number of generated Pipes

NU_Pipe_Information

Gives information about a Pipe

NU_Pipe_Pointers

Gives list of known Pipes

NU_Receive_From_Pipe

Wait for data from a Pipe

NU_Reset_Pipe

Puts back the PCB

NU_Send_To_Front_Of_Pipe

Send data to the beginning of a Pipe

NU_Send_To_Pipe

Send data into a Pipe



Semaphores:

NU_Create_Semaphore

Generate a Semaphore

NU_Delete_Semaphore

Delete a generated Semaphore

NU_Established_Semaphores

Gives number of generated Semaphores

NU_Obtain_Semaphore

Cover one Semaphore

NU_Release_Semaphore

Decontrol of a busy Semaphore

NU_Reset_Semaphore

Puts back the SCB

NU_Semaphore_Information

Gives information about a Semaphore

NU_Semaphore_Pointers

Gives list of known Semaphores



Event-Groups:

NU_Create_Event_Group

Generate a Eventgroup

NU_Delete_Event_Group

Delete a generated Eventgroup

NU_Established_Event_Groups

Gives number of generated Eventgroups

NU_Event_Group_Information

Gives information about an Eventgroup

NU_Event_Group_Pointers

Gives list of known Eventgroups

NU_Retrieve_Events

Wait for arriving an or several Events of an Eventgroup

NU_Set_Events

Place an/several Events of an Eventgroup



Signals:

NU_Control_Signals

Masking of Signals

NU_Receive_Signals

Retrieval of the Signals and erasure

NU_Register_Signal_Handler

Generates a Signal-Handler its start as soon as the corresponding signal was sent

NU_Send_Signals

Sends Signal at a Task



Timers:

NU_Control_Timer

Enable/disable of a Timer

NU_Create_Timer

Generates a Timer

NU_Delete_Timer

Delete a generated Timer

NU_Established_Timers

Gives number of generated Timers

NU_Reset_Timer

Puts back the Timer-CB

NU_Retrieve_Clock

System-Timer interrogate

NU_Set_Clock

System-Timer placed

NU_Timer_Information

Gives information about a Timer

NU_Timer_Pointers

Gives list of known Timer



Interrupts:

NU_Activiate_HISR

Starts a generated HISR (after end LISR)

NU_Control_Interrupts

Enable/disable(/Level) interrupts

NU_Create_HISR

Generate a HISR

NU_Current_HISR_Pointer

Gives a pointer on TCB of the current HISR

NU_Delete_HISR

Delete a generated HISR

NU_Established_HISRs

Gives number of generated HISR's

NU_HISR_Information

Gives information about a HISR

NU_HISR_Pointers

Gives list of known HISR's

NU_Local_Control_Interrupts

Eanble/disable(/Level) interrupts however only as far as to the next Context-Switch

NU_Register_LISR

Generate a LISR through entry in Vectortable

NU_Setup_Vector

Enrollment of an unmanaged-ISR (Assembler-ISR)



System-Diagnostics:

NU_Disable_History_Saving

Disable History-writing

NU_Enable_History_Saving

Enable History-writing

NU_Licence_Information

Gives License-Information

NU_Make_History_Entry

Write entry in History

NU_Release_Information

Gives Release-Information

NU_Retrieve_History_Entry

Gives first Histor-Entry and delete this in the table



I/O-Drivers:

NU_Create_Driver

Generates an I/O-Driver

NU_Delete_Driver

Delete a generated I/O-Driver

NU_Driver_Pointers

Gives list of known I/O-Drivers

NU_Established_Drivers

Gives number of generated I/O-Drivers

NU_Protect

Protection of sharing against a Protector

NU_Request_Driver

Send the request-structur to an I/O-Driver

NU_Resume_Driver

If wakes a Task again that is suspended through "Suspend_Driver"

NU_Suspend_Driver

If suspends the Task that uses the I/O-Driver

NU_Unprotect

Protection against a Protector lifts



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 to ASM-ISR's:

* To integrate manually in the Nucleus about Assembler-ISR's, so-called "unmanaged-ISRs", following start code must be implemented with in jump into the ISR: (Example x86)

EXTRN _TCT_Interrupt_Context_Save : far EXTRN _TCT_Interrupt_Context_Restore : far ... ISR: push ax ; save the index mov ax,0Ch ; load the table-vector call far PTR _TCT_Interrupt_Context_Save push ds mov ax,_DATA ; set ASM-datasegment mov ds,ax ...

and at the end of the ISR:

... pop ds jmp far PTR _TCT_Interrupt_Context_Restore iret ; return (never used)





* In order to call a HISR (High-Interrupt-Service-Routine) from Assembler-ISR's, installs, following call must be implemented into the ISR: (Example x86)

EXTRN _TCT_Activate_HISR : far ... ... mov ax, SEG Demo_HISR ; get pointer to HISR-function lea bx, offset Demo_HISR push ax ; save on stack push bx call far PTR _TCT_Activate_HISR ; install this HISR as System-Task pop bx ; restore stack pop bx ...



Stand: 03/2001