![]() |
SuperTinyKernel™ RTOS 1.05.3
Lightweight, high-performance, deterministic, bare-metal C++ RTOS for resource-constrained embedded systems. MIT Open Source License.
|
Scheduling-strategy-facing interface for a kernel task slot. More...
#include <stk_common.h>
Public Types | |
| typedef DLHeadType | ListHeadType |
| List head type for IKernelTask elements. | |
| typedef DLEntryType | ListEntryType |
| List entry type of IKernelTask elements. | |
| typedef DListEntry< IKernelTask, _ClosedLoop > | DLEntryType |
| Convenience alias for this entry type. Used to avoid repeating the full template spelling. | |
| typedef DListHead< IKernelTask, _ClosedLoop > | DLHeadType |
| Convenience alias for the corresponding list head type. | |
Public Member Functions | |
| virtual ITask * | GetUserTask ()=0 |
| Get user task. | |
| virtual Stack * | GetUserStack ()=0 |
| Get pointer to the user task's stack. | |
| virtual int32_t | GetWeight () const =0 |
| Get static base weight assigned to the task. | |
| virtual void | SetCurrentWeight (int32_t weight)=0 |
| Set the current dynamic weight value used by the scheduling strategy. | |
| virtual int32_t | GetCurrentWeight () const =0 |
| Get the current dynamic weight value of this task. | |
| virtual Timeout | GetHrtPeriodicity () const =0 |
| Get HRT task execution periodicity. | |
| virtual Timeout | GetHrtDeadline () const =0 |
| Get HRT task deadline (max allowed task execution time). | |
| virtual Timeout | GetHrtRelativeDeadline () const =0 |
| Get HRT task's relative deadline. | |
| virtual bool | IsSleeping () const =0 |
| Check whether the task is currently sleeping. | |
| virtual void | Wake ()=0 |
| Wake a sleeping task on the next scheduling tick. | |
| DLHeadType * | GetHead () const |
| Get the list head this entry currently belongs to. | |
| DLEntryType * | GetNext () const |
| Get the next entry in the list. | |
| DLEntryType * | GetPrev () const |
| Get the previous entry in the list. | |
| bool | IsLinked () const |
| Check whether this entry is currently a member of any list. | |
| operator IKernelTask * () | |
| Implicit conversion to a mutable pointer to the host object (T). | |
| operator const IKernelTask * () const | |
| Implicit conversion to a const pointer to the host object (T). | |
Private Member Functions | |
| void | Link (DLHeadType *head, DLEntryType *next, DLEntryType *prev) |
| Wire this entry into a list between prev and next. | |
| void | Unlink () |
| Remove this entry from its current list. | |
Private Attributes | |
| DLHeadType * | m_head |
Owning list head, or NULL when the entry is not linked. | |
| DLEntryType * | m_next |
Next entry in the list, or NULL (open list boundary) / first entry (closed loop). | |
| DLEntryType * | m_prev |
Previous entry in the list, or NULL (open list boundary) / last entry (closed loop). | |
Scheduling-strategy-facing interface for a kernel task slot.
Wraps a user ITask and exposes the metadata that task-switching strategy implementations (ITaskSwitchStrategy) need to make scheduling decisions: sleep state (IsSleeping, Wake), HRT timing (GetHrtPeriodicity, GetHrtDeadline, GetHrtRelativeDeadline), and weighted-round-robin support (GetWeight, GetCurrentWeight, SetCurrentWeight).
Definition at line 492 of file stk_common.h.
|
inherited |
Convenience alias for this entry type. Used to avoid repeating the full template spelling.
Definition at line 70 of file stk_linked_list.h.
|
inherited |
Convenience alias for the corresponding list head type.
Definition at line 75 of file stk_linked_list.h.
List entry type of IKernelTask elements.
Definition at line 503 of file stk_common.h.
List head type for IKernelTask elements.
Definition at line 498 of file stk_common.h.
|
pure virtual |
Get the current dynamic weight value of this task.
Implemented in stk::Kernel< TMode, TSize, TStrategy, TPlatform >::KernelTask.
Referenced by stk::SwitchStrategySmoothWeightedRoundRobin::GetNext().
|
inlineinherited |
Get the list head this entry currently belongs to.
NULL if the entry is not linked. Definition at line 80 of file stk_linked_list.h.
|
pure virtual |
Get HRT task deadline (max allowed task execution time).
Implemented in stk::Kernel< TMode, TSize, TStrategy, TPlatform >::KernelTask.
Referenced by stk::SwitchStrategyMonotonic< MSS_TYPE_RATE >::AddTask(), stk::SchedulabilityCheck::IsSchedulableWCRT(), and stk::test::TEST().
|
pure virtual |
Get HRT task execution periodicity.
Implemented in stk::Kernel< TMode, TSize, TStrategy, TPlatform >::KernelTask.
Referenced by stk::SwitchStrategyMonotonic< MSS_TYPE_RATE >::AddTask(), stk::SchedulabilityCheck::IsSchedulableWCRT(), and stk::test::TEST().
|
pure virtual |
Get HRT task's relative deadline.
Implemented in stk::Kernel< TMode, TSize, TStrategy, TPlatform >::KernelTask.
Referenced by stk::SwitchStrategyEDF::GetNext(), stk::test::TEST(), and stk::test::TEST().
|
inlineinherited |
Get the next entry in the list.
NULL if this is the last entry (open list) or the first entry (closed loop, where next wraps to first). _ClosedLoop == true) this pointer is never NULL when the entry is linked. Definition at line 88 of file stk_linked_list.h.
|
inlineinherited |
Get the previous entry in the list.
NULL if this is the first entry (open list) or the last entry (closed loop, where prev wraps to last). _ClosedLoop == true) this pointer is never NULL when the entry is linked. Definition at line 96 of file stk_linked_list.h.
|
pure virtual |
Get pointer to the user task's stack.
Implemented in stk::Kernel< TMode, TSize, TStrategy, TPlatform >::KernelTask.
|
pure virtual |
Get user task.
Implemented in stk::Kernel< TMode, TSize, TStrategy, TPlatform >::KernelTask.
Referenced by stk::test::TEST(), stk::test::TEST(), stk::test::TEST(), stk::test::TEST(), stk::test::TEST(), stk::test::TEST(), stk::test::TEST(), stk::test::TEST(), stk::test::TEST(), stk::test::TEST(), stk::test::TestAlgorithm(), and stk::test::TestPriorityNext().
|
pure virtual |
Get static base weight assigned to the task.
Implemented in stk::Kernel< TMode, TSize, TStrategy, TPlatform >::KernelTask.
Referenced by stk::SwitchStrategySmoothWeightedRoundRobin::AddActive(), stk::SwitchStrategySmoothWeightedRoundRobin::AddTask(), stk::SwitchStrategySmoothWeightedRoundRobin::GetNext(), stk::SwitchStrategyFixedPriority< 32 >::GetTaskPriority(), and stk::SwitchStrategySmoothWeightedRoundRobin::RemoveActive().
|
inlineinherited |
Check whether this entry is currently a member of any list.
true if linked (m_head != NULL); false otherwise. Definition at line 101 of file stk_linked_list.h.
|
pure virtual |
Check whether the task is currently sleeping.
Implemented in stk::Kernel< TMode, TSize, TStrategy, TPlatform >::KernelTask.
Referenced by stk::SwitchStrategyMonotonic< MSS_TYPE_RATE >::GetNext(), stk::SwitchStrategyEDF::OnTaskSleep(), stk::SwitchStrategyFixedPriority< 32 >::OnTaskSleep(), stk::SwitchStrategyRoundRobin::OnTaskSleep(), stk::SwitchStrategySmoothWeightedRoundRobin::OnTaskSleep(), stk::SwitchStrategyEDF::OnTaskWake(), stk::SwitchStrategyFixedPriority< 32 >::OnTaskWake(), stk::SwitchStrategyRoundRobin::OnTaskWake(), and stk::SwitchStrategySmoothWeightedRoundRobin::OnTaskWake().
|
inlineprivateinherited |
Wire this entry into a list between prev and next.
| [in] | head | The owning DListHead. Stored as a back-pointer for IsLinked() and ownership checks. |
| [in] | next | The entry that will follow this one, or NULL if this becomes the last entry. |
| [in] | prev | The entry that will precede this one, or NULL if this becomes the first entry. |
Definition at line 137 of file stk_linked_list.h.
|
inlineinherited |
Implicit conversion to a const pointer to the host object (T).
Definition at line 115 of file stk_linked_list.h.
|
inlineinherited |
Implicit conversion to a mutable pointer to the host object (T).
Definition at line 108 of file stk_linked_list.h.
|
pure virtual |
Set the current dynamic weight value used by the scheduling strategy.
| [in] | weight | New current dynamic weight value. |
Implemented in stk::Kernel< TMode, TSize, TStrategy, TPlatform >::KernelTask.
Referenced by stk::SwitchStrategySmoothWeightedRoundRobin::AddTask(), stk::SwitchStrategySmoothWeightedRoundRobin::GetNext(), and stk::SwitchStrategySmoothWeightedRoundRobin::OnTaskWake().
|
inlineprivateinherited |
Remove this entry from its current list.
Definition at line 157 of file stk_linked_list.h.
|
pure virtual |
Wake a sleeping task on the next scheduling tick.
Implemented in stk::Kernel< TMode, TSize, TStrategy, TPlatform >::KernelTask.
|
privateinherited |
Owning list head, or NULL when the entry is not linked.
Definition at line 170 of file stk_linked_list.h.
|
privateinherited |
Next entry in the list, or NULL (open list boundary) / first entry (closed loop).
Definition at line 171 of file stk_linked_list.h.
|
privateinherited |
Previous entry in the list, or NULL (open list boundary) / last entry (closed loop).
Definition at line 172 of file stk_linked_list.h.