Process management

Scheduling policy:

There are two scheduling policies available: RT_SCHED_FIFO and RT_SCHED_RR.

Function rt_set_sched_policy(RT_TASK *task, int policy, int rr_quantum_ns) is used to set the priority and the round robin quantum.

Periodic threads:

The system provides special system calls to implement periodic threads: rt_task_make_periodic() and rt_task_wait_period()

Range of priorities and maximum number of threads:

Minimum and maximum priority is 0x3fffFfff and 0 respectively. Which is the opposite way as how POSIX define priorities, that is, in POSIX the higher the priority, the higher the priority.

The number of active tasks is only limited by the amount of memory available.

Thread creation and deletion:

rt_task_init() and rt_task_delete functions are used to create and destroy tasks. If task task was waiting on a queue, i.e. semaphore, mailbox, etc, it is removed from such a queue and messaging tasks pending on its message queue are unblocked with an error return.