Sirius RTOS provides a comprehensive suite of system objects that represent various system resources. these objects facilitate task synchronization, critical section management, inter-task data exchange, and event notification. A summary of all available system objects is provided in the following section.
The table below details the fundamental system objects and their primary functions.
| Object name | Description |
|---|---|
| Tasks | Tasks are the fundamental execution units of the system, enabling the concurrent execution of application code. |
| Mutexes | Mutexes manage access to critical sections and include priority inversion avoidance mechanisms. They restrict resource access to a single task at any given time. |
| Semaphores | Semaphores function similarly to mutexes but are designed for critical sections where multiple tasks may require access while still necessitating priority inversion protection. |
| Counting semaphores | Counting semaphores control access to a pool of resources, allowing a specified number of tasks concurrent access. They offer higher performance than standard semaphores but do not support priority inversion avoidance. |
| Events | Events are binary-state objects utilized for signaling specific system occurrences. |
| Timers | Timers facilitate task synchronization based on specific points in time or recurring time intervals. |
| Shared memories | Shared memory objects manage and synchronize access to a dedicated memory buffer used for communication between multiple tasks. |
| Queue of pointers | The queue of pointers is a high-speed implementation for buffering a fixed number of messages, where each message size is limited to the PVOID type. |
| Streams | Stream objects provide mechanisms for reading, writing, and managing continuous flows of binary data. |
| Queues | Queues provide FIFO (First In, First Out) data exchange between tasks. The message size and the maximum capacity of the queue are fixed at the time of creation. |
| Mailboxes | Mailboxes are FIFO-based communication objects similar to queues, but they offer dynamic message sizing and quantities limited only by available system memory. Unless direct read-write is used, memory is dynamically allocated for each message and freed upon retrieval. |
| Flags | Flags are lightweight objects used for exchanging small amounts of status information. They allow individual bits to be set or reset and can return the state of modified flags. |