![]() |
SuperTinyKernel™ RTOS 1.05.3
Lightweight, high-performance, deterministic, bare-metal C++ RTOS for resource-constrained embedded systems. MIT Open Source License.
|
Partial implementation of the user task. More...
#include <stk_helper.h>
Public Types | |
| enum | { STACK_SIZE = _StackSize } |
Public Member Functions | |
| Word * | GetStack () const |
| Get pointer to the stack memory. | |
| size_t | GetStackSize () const |
| Get number of elements of the stack memory array. | |
| size_t | GetStackSizeBytes () const |
| Get size of the memory in bytes. | |
| EAccessMode | GetAccessMode () const |
| Get hardware access mode of the user task. | |
| virtual void | OnDeadlineMissed (uint32_t duration) |
| Default no-op handler. Override in subclass to log or handle missed deadlines. | |
| virtual int32_t | GetWeight () const |
| Default weight of 1. Override in subclass if custom scheduling weight is needed. | |
| virtual TId | GetId () const |
| Get object's own address as its Id. Unique per task instance, requires no manual assignment. | |
| virtual const char * | GetTraceName () const |
| Override in subclass to supply a name for SEGGER SystemView tracing. Returns NULL by default. | |
| virtual void | Run ()=0 |
| Entry point of the user task. | |
Protected Member Functions | |
| Task (const Task &)=delete | |
| Task & | operator= (const Task &)=delete |
| Task () | |
| Initializes task instance and zero-initializes its internal stack memory. | |
| ~Task () | |
| Destructor. | |
Private Attributes | |
| StackMemoryDef< _StackSize >::Type | m_stack |
| Stack memory region, 16-byte aligned. | |
Partial implementation of the user task.
Provides stack storage and default implementations of all optional ITask methods. Inherit from this class and implement GetFunc() and GetFuncUserData() to make a schedulable task. Use ACCESS_USER for unprivileged tasks and ACCESS_PRIVILEGED for tasks requiring full hardware access.
Usage example:
Definition at line 49 of file stk_helper.h.
| anonymous enum |
|
protecteddelete |
|
inlineprotected |
Initializes task instance and zero-initializes its internal stack memory.
The constructor is protected to ensure that the Task class can only be instantiated through a derived subclass. It handles the allocation (if applicable) and zero-initialization of the m_stack member based on the _StackSize template parameter.
Definition at line 88 of file stk_helper.h.
References m_stack.
|
inlineprotected |
Destructor.
Definition at line 94 of file stk_helper.h.
|
inlinevirtual |
Get hardware access mode of the user task.
Implements stk::ITask.
Definition at line 57 of file stk_helper.h.
|
inlinevirtual |
Get object's own address as its Id. Unique per task instance, requires no manual assignment.
Implements stk::ITask.
Definition at line 72 of file stk_helper.h.
References stk::hw::PtrToWord().
Referenced by stk::test::TEST().
|
inlinevirtual |
Get pointer to the stack memory.
Implements stk::IStackMemory.
Definition at line 54 of file stk_helper.h.
References m_stack.
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::TestHrtTaskExitDuringSleepState(), and stk::test::TestTaskSleep().
|
inlinevirtual |
Get number of elements of the stack memory array.
Implements stk::IStackMemory.
Definition at line 55 of file stk_helper.h.
Referenced by stk::test::TEST().
|
inlinevirtual |
Get size of the memory in bytes.
Implements stk::IStackMemory.
Definition at line 56 of file stk_helper.h.
Referenced by stk::test::TEST().
|
inlinevirtual |
Override in subclass to supply a name for SEGGER SystemView tracing. Returns NULL by default.
Implements stk::ITask.
Definition at line 76 of file stk_helper.h.
Referenced by stk::test::TEST().
|
inlinevirtual |
Default weight of 1. Override in subclass if custom scheduling weight is needed.
Implements stk::ITask.
Definition at line 68 of file stk_helper.h.
Referenced by stk::test::TEST().
|
inlinevirtual |
Default no-op handler. Override in subclass to log or handle missed deadlines.
Implements stk::ITask.
Reimplemented in stk::test::TaskMock< _AccessMode >, and stk::test::TaskMock< ACCESS_USER >.
Definition at line 62 of file stk_helper.h.
Referenced by stk::test::TaskMock< _AccessMode >::OnDeadlineMissed().
|
protecteddelete |
|
pure virtualinherited |
Entry point of the user task.
Kernel is configured as KERNEL_STATIC, the body must contain an infinite loop. Implemented in stk::test::chain::TestTask< _AccessMode >, stk::test::chain::TestTask< _AccessMode >, stk::test::condvar::MutexReacquiredTask< _AccessMode >, stk::test::condvar::NotifyAllWakesTask< _AccessMode >, stk::test::condvar::NotifyOneOrderTask< _AccessMode >, stk::test::condvar::NotifyOneWakesTask< _AccessMode >, stk::test::condvar::NoWaitTimeoutTask< _AccessMode >, stk::test::condvar::PredicateLoopTask< _AccessMode >, stk::test::condvar::StressTestTask< _AccessMode >, stk::test::condvar::TimeoutExpiresTask< _AccessMode >, stk::test::event::AutoResetBasicTask< _AccessMode >, stk::test::event::InitialStateTask< _AccessMode >, stk::test::event::ManualResetBasicTask< _AccessMode >, stk::test::event::PulseAutoResetTask< _AccessMode >, stk::test::event::PulseManualResetTask< _AccessMode >, stk::test::event::ResetManualTask< _AccessMode >, stk::test::event::TimeoutWaitTask< _AccessMode >, stk::test::event::TryWaitTask< _AccessMode >, stk::test::eventflags::ClearTask< _AccessMode >, stk::test::eventflags::GetTask< _AccessMode >, stk::test::eventflags::InitialFlagsTask< _AccessMode >, stk::test::eventflags::MultiWaiterAllTask< _AccessMode >, stk::test::eventflags::MultiWaiterAnyTask< _AccessMode >, stk::test::eventflags::NoClearTask< _AccessMode >, stk::test::eventflags::SetWaitAllTask< _AccessMode >, stk::test::eventflags::SetWaitAnyTask< _AccessMode >, stk::test::eventflags::TimeoutTask< _AccessMode >, stk::test::eventflags::TryWaitTask< _AccessMode >, stk::test::hrt::TestTask< _AccessMode >, stk::test::mutex::BasicLockUnlockTask< _AccessMode >, stk::test::mutex::FIFOOrderTask< _AccessMode >, stk::test::mutex::InterTaskCoordinationTask< _AccessMode >, stk::test::mutex::RecursiveDepthTask< _AccessMode >, stk::test::mutex::RecursiveLockTask< _AccessMode >, stk::test::mutex::StressTestTask< _AccessMode >, stk::test::mutex::TimedLockTask< _AccessMode >, stk::test::mutex::TryLockTask< _AccessMode >, stk::test::pipe::BasicWriteReadTask< _AccessMode >, stk::test::pipe::BulkWriteReadTask< _AccessMode >, stk::test::pipe::GetSizeIsEmptyTask< _AccessMode >, stk::test::pipe::MultiProducerConsumerTask< _AccessMode >, stk::test::pipe::ReadBlocksWhenEmptyTask< _AccessMode >, stk::test::pipe::StressTestTask< _AccessMode >, stk::test::pipe::TimeoutTask< _AccessMode >, stk::test::pipe::WriteBlocksWhenFullTask< _AccessMode >, stk::test::rwmutex::ConcurrentReadersTask< _AccessMode >, stk::test::rwmutex::ReaderWriterAlternationTask< _AccessMode >, stk::test::rwmutex::ReadUnlockWakesWriterTask< _AccessMode >, stk::test::rwmutex::StressTestTask< _AccessMode >, stk::test::rwmutex::TimedReadLockTask< _AccessMode >, stk::test::rwmutex::TimedWriteLockTask< _AccessMode >, stk::test::rwmutex::TryReadLockWhileWriterTask< _AccessMode >, stk::test::rwmutex::WriterExclusivityTask< _AccessMode >, stk::test::rwmutex::WriterPriorityTask< _AccessMode >, stk::test::rwmutex::WriterStarvationTask< _AccessMode >, stk::test::semaphore::BasicSignalWaitTask< _AccessMode >, stk::test::semaphore::BoundedBufferTask< _AccessMode >, stk::test::semaphore::FIFOOrderTask< _AccessMode >, stk::test::semaphore::InitialCountTask< _AccessMode >, stk::test::semaphore::SignalBeforeWaitTask< _AccessMode >, stk::test::semaphore::StressTestTask< _AccessMode >, stk::test::semaphore::TimeoutWaitTask< _AccessMode >, stk::test::semaphore::ZeroTimeoutTask< _AccessMode >, stk::test::sleep::TestTask< _AccessMode >, stk::test::spinlock::MutualExclusionTask< _AccessMode >, stk::test::spinlock::RecursiveLockTask< _AccessMode >, stk::test::spinlock::RecursiveTryLockTask< _AccessMode >, stk::test::spinlock::StressTestTask< _AccessMode >, stk::test::spinlock::TryLockContendedTask< _AccessMode >, stk::test::spinlock::TryLockFreeTask< _AccessMode >, stk::test::spinlock::UnlockTransferTask< _AccessMode >, stk::test::spinlock::YieldUnderContentionTask< _AccessMode >, stk::test::switch_::TestTask< _AccessMode >, stk::test::TaskMock< _AccessMode >, stk::test::TaskMock< ACCESS_USER >, stk::test::TaskMockW< _Weight, _AccessMode >, stk::test::timer::MultipleTimersTask< _AccessMode >, stk::test::timer::OneShotTimerTask< _AccessMode >, stk::test::timer::PeriodicTimerTask< _AccessMode >, stk::test::timer::ResetPeriodicTimerTask< _AccessMode >, stk::test::timer::RestartTimerTask< _AccessMode >, stk::test::timer::SetPeriodTask< _AccessMode >, stk::test::timer::StartOrResetTask< _AccessMode >, stk::test::timer::StopTimerTask< _AccessMode >, stk::test::timer::StressTestTask< _AccessMode >, stk::time::TimerHost::TimerWorkerTask, and TaskWrapper.
|
private |
Stack memory region, 16-byte aligned.
Definition at line 98 of file stk_helper.h.
Referenced by GetStack(), and Task().