![]() |
SuperTinyKernel™ RTOS 1.05.3
Lightweight, high-performance, deterministic, bare-metal C++ RTOS for resource-constrained embedded systems. MIT Open Source License.
|
Namespace of STK package. More...
Namespaces | |
| namespace | memory |
| Memory-related primitives. | |
| namespace | hw |
| Hardware Abstraction Layer (HAL) for architecture-specific operations. | |
| namespace | util |
| Internal utility namespace containing data structure helpers (linked lists, etc.) used by the kernel implementation. Not part of the public user API. | |
| namespace | sync |
| Synchronization primitives for task coordination and resource protection. | |
| namespace | time |
| Time-related primitives. | |
| namespace | test |
| Namespace of the test inventory. | |
Classes | |
| class | PlatformArmCortexM |
| Concrete implementation of IPlatform driver for the Arm Cortex-M0, M3, M4, M7 processors. More... | |
| class | PlatformRiscV |
| Concrete implementation of IPlatform driver for the Risc-V processors. More... | |
| class | PlatformContext |
| Base platform context for all platform implementations. More... | |
| class | PlatformX86Win32 |
| Concrete implementation of IPlatform driver for the x86 Win32 platform. More... | |
| class | Kernel |
| Concrete implementation of IKernel. More... | |
| class | StackMemoryDef |
| Stack memory type definition. More... | |
| class | Stack |
| Stack descriptor. More... | |
| class | IStackMemory |
| Interface for a stack memory region. More... | |
| class | IWaitObject |
| Wait object. More... | |
| class | ITraceable |
| Traceable object. More... | |
| class | ISyncObject |
| Synchronization object. More... | |
| class | IMutex |
| Interface for mutex synchronization primitive. More... | |
| class | ITask |
| Interface for a user task. More... | |
| class | IKernelTask |
| Scheduling-strategy-facing interface for a kernel task slot. More... | |
| class | IPlatform |
| Interface for a platform driver. More... | |
| class | ITaskSwitchStrategy |
| Interface for a task switching strategy implementation. More... | |
| class | IKernel |
| Interface for the implementation of the kernel of the scheduler. It supports Soft and Hard Real-Time modes. More... | |
| class | IKernelService |
| Interface for the kernel services exposed to the user processes during run-time when Kernel started scheduling the processes. More... | |
| class | Task |
| Partial implementation of the user task. More... | |
| class | TaskW |
| Partial implementation of the user task with a compile-time scheduling weight. Use when the kernel is configured with SwitchStrategySmoothWeightedRoundRobin. More... | |
| class | StackMemoryWrapper |
| Adapts an externally-owned stack memory array to the IStackMemory interface. More... | |
| class | SwitchStrategyEDF |
| Earliest Deadline First (EDF) scheduling strategy: always selects the runnable task with the least time remaining before its deadline expires. More... | |
| class | SwitchStrategyFixedPriority |
| Fixed-priority preemptive scheduling strategy with round-robin arbitration within each priority level. More... | |
| class | SwitchStrategyMonotonic |
| Monotonic scheduling strategy: Rate-Monotonic (RM) or Deadline-Monotonic (DM), selected at compile time by the _Type template parameter. More... | |
| class | SchedulabilityCheck |
| Utility class providing static methods for Worst-Case Response Time (WCRT) schedulability analysis of a monotonic HRT task set. More... | |
| class | SwitchStrategyRoundRobin |
| Round-Robin task-switching strategy: each runnable task receives one time slice (one tick interval) in turn before the kernel moves to the next task. More... | |
| class | SwitchStrategySmoothWeightedRoundRobin |
| Smooth Weighted Round-Robin (SWRR) task-switching strategy: distributes CPU time proportionally to per-task weights while avoiding execution bursts by spreading selections evenly over time. More... | |
Typedefs | |
| typedef PlatformArmCortexM | PlatformDefault |
| Default platform implementation. | |
| typedef uintptr_t | Word |
| Native processor word type. | |
| typedef Word | TId |
| typedef int32_t | Timeout |
| Timeout time (ticks). | |
| typedef int64_t | Ticks |
| Ticks value. | |
| typedef uint64_t | Cycles |
| Cycles value. | |
| typedef SwitchStrategyFixedPriority< 32 > | SwitchStrategyFP32 |
Shorthand alias for SwitchStrategyFixedPriority<32>: 32 priority levels (0..31), using a single 32-bit m_ready_bitmap for O(1) highest-priority lookup. | |
| typedef SwitchStrategyMonotonic< MSS_TYPE_RATE > | SwitchStrategyRM |
| Shorthand alias for SwitchStrategyMonotonic<MSS_TYPE_RATE>: Rate-Monotonic scheduling (shorter scheduling period -> higher priority). | |
| typedef SwitchStrategyMonotonic< MSS_TYPE_DEADLINE > | SwitchStrategyDM |
| Shorthand alias for SwitchStrategyMonotonic<MSS_TYPE_DEADLINE>: Deadline-Monotonic scheduling (shorter execution deadline -> higher priority). | |
| typedef SwitchStrategyRoundRobin | SwitchStrategyRR |
| Shorthand alias for SwitchStrategyRoundRobin. | |
| typedef SwitchStrategySmoothWeightedRoundRobin | SwitchStrategySWRR |
| Shorthand alias for SwitchStrategySmoothWeightedRoundRobin. | |
Enumerations | |
| enum | EAccessMode : int32_t { ACCESS_USER = 0 , ACCESS_PRIVILEGED } |
| Hardware access mode by the user task. More... | |
| enum | EKernelMode : uint8_t { KERNEL_STATIC = (1 << 0) , KERNEL_DYNAMIC = (1 << 1) , KERNEL_HRT = (1 << 2) , KERNEL_SYNC = (1 << 3) , KERNEL_TICKLESS = (1 << 4) } |
| Kernel operating mode. More... | |
| enum | EKernelPanicId : uint32_t { KERNEL_PANIC_NONE = 0 , KERNEL_PANIC_SPINLOCK_DEADLOCK = 1 , KERNEL_PANIC_STACK_CORRUPT = 2 , KERNEL_PANIC_ASSERT = 3 , KERNEL_PANIC_HRT_HARD_FAULT = 4 , KERNEL_PANIC_CPU_EXCEPTION = 5 , KERNEL_PANIC_CS_NESTING_OVERFLOW = 6 , KERNEL_PANIC_UNKNOWN_SVC = 7 , KERNEL_PANIC_BAD_STATE = 8 , KERNEL_PANIC_BAD_MODE = 9 } |
| Identifies the source of a kernel panic. More... | |
| enum | EStackType { STACK_USER_TASK = 0 , STACK_SLEEP_TRAP , STACK_EXIT_TRAP } |
| Stack type. More... | |
| enum | EConsts { PERIODICITY_MAX = 99000 , PERIODICITY_DEFAULT = 1000 , STACK_SIZE_MIN = 32U } |
| Constants. More... | |
| enum | ESystemTaskId { SYS_TASK_ID_SLEEP = 0xFFFFFFFF , SYS_TASK_ID_EXIT = 0xFFFFFFFE } |
| System task id. More... | |
| enum | ETraceEventId { TRACE_EVENT_UNKNOWN = 0 , TRACE_EVENT_SWITCH = 1000 + 1 , TRACE_EVENT_SLEEP = 1000 + 2 } |
| Trace event identifiers for tracing task suspension and resume with debugging tools (e.g. SEGGER SystemView). More... | |
| enum | EMonotonicSwitchStrategyType { MSS_TYPE_RATE , MSS_TYPE_DEADLINE } |
| Policy selector for SwitchStrategyMonotonic: determines the timing attribute used to assign fixed priorities to tasks at AddTask() time. More... | |
Functions | |
| Word | GetTls () |
| Get thread-local storage (TLS). | |
| void | SetTls (Word tp) |
| Set thread-local storage (TLS). | |
| static __stk_forceinline Cycles | ConvertTimeUsToClockCycles (Cycles clock_freq, Ticks time_us) |
| Convert time (microseconds) to core clock cycles. | |
| static bool | IsIsrTid (TId tid) |
| Test whether a task identifier represents an ISR context. | |
| template<typename T> | |
| static constexpr T | Min (T a, T b) |
| Compile-time minimum of two values. | |
| template<typename T> | |
| static constexpr T | Max (T a, T b) |
| Compile-time maximum of two values. | |
| TId | GetTid () |
| Get task/thread Id of the calling task. | |
| int64_t | GetMsFromTicks (int64_t ticks, int32_t resolution) |
| Convert ticks to milliseconds. | |
| Ticks | GetTicksFromMs (int64_t ms, int32_t resolution) |
| Convert milliseconds to ticks. | |
| Ticks | GetTicks () |
| Get number of ticks elapsed since kernel start. | |
| int32_t | GetTickResolution () |
| Get number of microseconds in one tick. | |
| Ticks | GetTicksFromMs (int64_t ms) |
| Convert milliseconds to ticks using the current kernel tick resolution. | |
| static int64_t | GetTimeNowMs () |
| Get current time in milliseconds since kernel start. | |
| Cycles | GetSysTimerCount () |
| Get system timer count value. | |
| uint32_t | GetSysTimerFrequency () |
| Get system timer frequency. | |
| void | Sleep (Timeout ticks) |
| Put calling process into a sleep state. | |
| static void | SleepMs (Timeout ms) |
| Put calling process into a sleep state. | |
| void | SleepUntil (Ticks timestamp) |
| Put calling process into a sleep state until the specified timestamp. | |
| void | Yield () |
| Notify scheduler to switch to the next runnable task. | |
| void | Delay (Timeout ticks) |
| Delay calling process by busy-waiting until the deadline expires. | |
| static void | DelayMs (Timeout ms) |
| Delay calling process by busy-waiting until the deadline expires. | |
Variables | |
| static constexpr TId | TID_ISR_N = static_cast<TId>(0xFFFFF000U) |
| Bitmask sentinel for ISR-context task identifiers. | |
| static constexpr TId | TID_NONE = static_cast<TId>(0U) |
| Reserved task/thread id representing zero/none thread id. | |
| static constexpr Timeout | WAIT_INFINITE = INT32_MAX |
| Timeout value: block indefinitely until the synchronization object is signaled. | |
| static constexpr Timeout | NO_WAIT = 0 |
| Timeout value: return immediately if the synchronization object is not yet signaled (non-blocking poll). | |
Namespace of STK package.
| typedef uint64_t stk::Cycles |
Cycles value.
Definition at line 133 of file stk_common.h.
| typedef PlatformX86Win32 stk::PlatformDefault |
Default platform implementation.
Definition at line 56 of file stk_arch_arm-cortex-m.h.
Shorthand alias for SwitchStrategyMonotonic<MSS_TYPE_DEADLINE>: Deadline-Monotonic scheduling (shorter execution deadline -> higher priority).
Definition at line 505 of file stk_strategy_monotonic.h.
| typedef SwitchStrategyFixedPriority<32> stk::SwitchStrategyFP32 |
Shorthand alias for SwitchStrategyFixedPriority<32>: 32 priority levels (0..31), using a single 32-bit m_ready_bitmap for O(1) highest-priority lookup.
Definition at line 355 of file stk_strategy_fpriority.h.
Shorthand alias for SwitchStrategyMonotonic<MSS_TYPE_RATE>: Rate-Monotonic scheduling (shorter scheduling period -> higher priority).
Definition at line 498 of file stk_strategy_monotonic.h.
Shorthand alias for SwitchStrategyRoundRobin.
Definition at line 246 of file stk_strategy_rrobin.h.
Shorthand alias for SwitchStrategySmoothWeightedRoundRobin.
Definition at line 280 of file stk_strategy_swrrobin.h.
| typedef int64_t stk::Ticks |
Ticks value.
Definition at line 128 of file stk_common.h.
Definition at line 118 of file stk_common.h.
| typedef int32_t stk::Timeout |
Timeout time (ticks).
Definition at line 123 of file stk_common.h.
| typedef uintptr_t stk::Word |
Native processor word type.
Represents natural data width of the CPU (matching uintptr_t). Used for stack allocation, register storage, pointer value storage, and memory alignment to ensure atomic access, optimal performance, and hardware compatibility.
Definition at line 113 of file stk_common.h.
| enum stk::EAccessMode : int32_t |
Hardware access mode by the user task.
Definition at line 30 of file stk_common.h.
| enum stk::EConsts |
Constants.
| Enumerator | |
|---|---|
| PERIODICITY_MAX | Maximum periodicity (microseconds), 99 milliseconds (note: this value is the highest working on a real hardware and QEMU). |
| PERIODICITY_DEFAULT | Default periodicity (microseconds), 1 millisecond. |
| STACK_SIZE_MIN | Minimum stack size in elements of Word. Used as a lower bound for all stack allocations (user task, sleep trap, exit trap). See: StackMemoryDef, StackMemoryWrapper. |
Definition at line 79 of file stk_common.h.
| enum stk::EKernelMode : uint8_t |
Kernel operating mode.
Definition at line 39 of file stk_common.h.
| enum stk::EKernelPanicId : uint32_t |
Identifies the source of a kernel panic.
| Enumerator | |
|---|---|
| KERNEL_PANIC_NONE | Panic is absent (no fault). |
| KERNEL_PANIC_SPINLOCK_DEADLOCK | Spin-lock timeout expired: lock owner never released. |
| KERNEL_PANIC_STACK_CORRUPT | Stack integrity check failed. |
| KERNEL_PANIC_ASSERT | Internal assertion failed (maps from STK_ASSERT). |
| KERNEL_PANIC_HRT_HARD_FAULT | Kernel running in KERNEL_HRT mode reported deadline failure of the task. |
| KERNEL_PANIC_CPU_EXCEPTION | CPU reported an exception and halted execution. |
| KERNEL_PANIC_CS_NESTING_OVERFLOW | Critical section nesting limit exceeded: violation of STK_CRITICAL_SECTION_NESTINGS_MAX. |
| KERNEL_PANIC_UNKNOWN_SVC | Unknown service command received by SVC handler. |
| KERNEL_PANIC_BAD_STATE | Kernel entered unexpected (bad) state. |
| KERNEL_PANIC_BAD_MODE | Kernel is in bad/unsupported mode for the current operation. |
Definition at line 51 of file stk_common.h.
Policy selector for SwitchStrategyMonotonic: determines the timing attribute used to assign fixed priorities to tasks at AddTask() time.
Definition at line 28 of file stk_strategy_monotonic.h.
| enum stk::EStackType |
Stack type.
| Enumerator | |
|---|---|
| STACK_USER_TASK | Stack of the user task. |
| STACK_SLEEP_TRAP | Stack of the Sleep trap. |
| STACK_EXIT_TRAP | Stack of the Exit trap. |
Definition at line 69 of file stk_common.h.
| enum stk::ESystemTaskId |
System task id.
| Enumerator | |
|---|---|
| SYS_TASK_ID_SLEEP | Sleep trap. |
| SYS_TASK_ID_EXIT | Exit trap. |
Definition at line 89 of file stk_common.h.
| enum stk::ETraceEventId |
Trace event identifiers for tracing task suspension and resume with debugging tools (e.g. SEGGER SystemView).
| Enumerator | |
|---|---|
| TRACE_EVENT_UNKNOWN | Unknown / uninitialized trace event. |
| TRACE_EVENT_SWITCH | Task context switch event (task became active). |
| TRACE_EVENT_SLEEP | Task entered sleep / blocked state. |
Definition at line 99 of file stk_common.h.
|
static |
Convert time (microseconds) to core clock cycles.
| [in] | clock_freq | Clock frequency. |
| [in] | time_us | Time (microseconds). |
Definition at line 104 of file stk_arch_common.h.
References __stk_forceinline.
| void stk::Delay | ( | Timeout | ticks | ) |
Delay calling process by busy-waiting until the deadline expires.
| [in] | ticks | Delay time (ticks). Negative will cause an assertion. |
Definition at line 370 of file stk_helper.h.
References __stk_forceinline, stk::IKernelService::Delay(), and stk::IKernelService::GetInstance().
Referenced by DelayMs(), stk::test::blockpool::StressTask< _AccessMode >::Run(), stk::test::chain::TestTask< _AccessMode >::Run(), stk::test::condvar::NotifyOneOrderTask< _AccessMode >::Run(), stk::test::condvar::NotifyOneWakesTask< _AccessMode >::Run(), stk::test::condvar::PredicateLoopTask< _AccessMode >::Run(), stk::test::event::AutoResetBasicTask< _AccessMode >::Run(), stk::test::event::PulseAutoResetTask< _AccessMode >::Run(), stk::test::eventflags::MultiWaiterAllTask< _AccessMode >::Run(), stk::test::eventflags::SetWaitAnyTask< _AccessMode >::Run(), stk::test::hrt::TestTask< _AccessMode >::Run(), stk::test::msgqueue::StressTask< _AccessMode >::Run(), stk::test::mutex::BasicLockUnlockTask< _AccessMode >::Run(), stk::test::mutex::InterTaskCoordinationTask< _AccessMode >::Run(), stk::test::mutex::StressTestTask< _AccessMode >::Run(), stk::test::rwmutex::ReaderWriterAlternationTask< _AccessMode >::Run(), stk::test::rwmutex::StressTestTask< _AccessMode >::Run(), stk::test::rwmutex::WriterExclusivityTask< _AccessMode >::Run(), stk::test::rwmutex::WriterStarvationTask< _AccessMode >::Run(), stk::test::semaphore::BasicSignalWaitTask< _AccessMode >::Run(), stk::test::semaphore::BoundedBufferTask< _AccessMode >::Run(), stk::test::semaphore::FIFOOrderTask< _AccessMode >::Run(), stk::test::semaphore::StressTestTask< _AccessMode >::Run(), stk::test::spinlock::MutualExclusionTask< _AccessMode >::Run(), stk::test::spinlock::UnlockTransferTask< _AccessMode >::Run(), stk::test::switch_::TestTask< _AccessMode >::Run(), stk_delay(), stk::test::TEST(), and stk::test::TEST().
|
inlinestatic |
Delay calling process by busy-waiting until the deadline expires.
| [in] | ms | Delay time (milliseconds). Negative will cause an assertion. |
Definition at line 381 of file stk_helper.h.
References Delay(), and GetTicksFromMs().
Referenced by stk_delay_ms(), and stk::test::TEST().
| int64_t stk::GetMsFromTicks | ( | int64_t | ticks, |
| int32_t | resolution ) |
Convert ticks to milliseconds.
| [in] | ticks | Tick count to convert. |
| [in] | resolution | Microseconds per tick, as returned by IKernelService::GetTickResolution(). |
Definition at line 238 of file stk_helper.h.
References __stk_forceinline.
Referenced by stk::test::TEST().
| Cycles stk::GetSysTimerCount | ( | ) |
Get system timer count value.
Definition at line 306 of file stk_helper.h.
References __stk_forceinline, stk::IKernelService::GetInstance(), and stk::IKernelService::GetSysTimerCount().
Referenced by osKernelGetSysTimerCount(), osKernelGetSysTimerCount64(), stk_sys_timer_count(), and stk::test::TEST().
| uint32_t stk::GetSysTimerFrequency | ( | ) |
Get system timer frequency.
Definition at line 315 of file stk_helper.h.
References __stk_forceinline, stk::IKernelService::GetInstance(), and stk::IKernelService::GetSysTimerFrequency().
Referenced by osKernelGetSysTimerFreq(), stk_sys_timer_frequency(), and stk::test::TEST().
| int32_t stk::GetTickResolution | ( | ) |
Get number of microseconds in one tick.
Definition at line 268 of file stk_helper.h.
References __stk_forceinline, stk::IKernelService::GetInstance(), and stk::IKernelService::GetTickResolution().
Referenced by GetTicksFromMs(), osKernelGetTickFreq(), stk_tick_resolution(), stk_ticks_from_ms(), and stk::test::TEST().
| Ticks stk::GetTicks | ( | ) |
Get number of ticks elapsed since kernel start.
Definition at line 258 of file stk_helper.h.
References __stk_forceinline, stk::IKernelService::GetInstance(), and stk::IKernelService::GetTicks().
Referenced by stk::time::TimerHost::Timer::GetRemainingTime(), osKernelGetTickCount(), stk::time::PeriodicTrigger::Poll(), stk::time::TimerHost::Reset(), stk::time::PeriodicTrigger::Restart(), stk::time::TimerHost::Restart(), stk::time::TimerHost::Start(), stk::time::TimerHost::StartOrReset(), stk_ticks(), stk::test::TEST(), stk::test::TEST(), stk::test::TEST(), stk::test::TEST(), stk::test::TestTaskSleep(), stk::time::TimerHost::UpdateTime(), and stk::sync::EventFlags::Wait().
| Ticks stk::GetTicksFromMs | ( | int64_t | ms | ) |
Convert milliseconds to ticks using the current kernel tick resolution.
| [in] | ms | Time in milliseconds to convert. |
Definition at line 280 of file stk_helper.h.
References __stk_forceinline, GetTickResolution(), and GetTicksFromMs().
| Ticks stk::GetTicksFromMs | ( | int64_t | ms, |
| int32_t | resolution ) |
Convert milliseconds to ticks.
| [in] | ms | Time in milliseconds to convert. |
| [in] | resolution | Microseconds per tick, as returned by IKernelService::GetTickResolution(). |
Definition at line 249 of file stk_helper.h.
References __stk_forceinline.
Referenced by DelayMs(), GetTicksFromMs(), stk::test::stk::SetTimeNowMsec(), and SleepMs().
| TId stk::GetTid | ( | ) |
Get task/thread Id of the calling task.
Definition at line 227 of file stk_helper.h.
References __stk_forceinline, stk::IKernelService::GetInstance(), and stk::IKernelService::GetTid().
Referenced by stk::sync::SpinLock::Lock(), osThreadGetId(), stk_tid(), stk::test::TEST(), stk::test::TEST(), stk::test::Test_SyncWait(), stk::sync::SpinLock::TryLock(), stk::sync::Mutex::Unlock(), and stk::sync::SpinLock::Unlock().
|
inlinestatic |
Get current time in milliseconds since kernel start.
Definition at line 291 of file stk_helper.h.
References stk::IKernelService::GetInstance(), stk::IKernelService::GetTickResolution(), and stk::IKernelService::GetTicks().
Referenced by stk::test::timer::TestTimer::OnExpired(), stk::test::blockpool::TimedAllocTimeoutTask< _AccessMode >::Run(), stk::test::chain::TestTask< _AccessMode >::Run(), stk::test::condvar::NoWaitTimeoutTask< _AccessMode >::Run(), stk::test::condvar::TimeoutExpiresTask< _AccessMode >::Run(), stk::test::event::TimeoutWaitTask< _AccessMode >::Run(), stk::test::event::TryWaitTask< _AccessMode >::Run(), stk::test::eventflags::TimeoutTask< _AccessMode >::Run(), stk::test::eventflags::TryWaitTask< _AccessMode >::Run(), stk::test::hrt::TestTask< _AccessMode >::Run(), stk::test::msgqueue::TimedGetTimeoutTask< _AccessMode >::Run(), stk::test::msgqueue::TimedPutTimeoutTask< _AccessMode >::Run(), stk::test::mutex::TimedLockTask< _AccessMode >::Run(), stk::test::mutex::TryLockTask< _AccessMode >::Run(), stk::test::pipe::TimeoutTask< _AccessMode >::Run(), stk::test::rwmutex::ReadUnlockWakesWriterTask< _AccessMode >::Run(), stk::test::rwmutex::TimedReadLockTask< _AccessMode >::Run(), stk::test::rwmutex::TimedWriteLockTask< _AccessMode >::Run(), stk::test::rwmutex::TryReadLockWhileWriterTask< _AccessMode >::Run(), stk::test::rwmutex::WriterStarvationTask< _AccessMode >::Run(), stk::test::semaphore::TimeoutWaitTask< _AccessMode >::Run(), stk::test::semaphore::ZeroTimeoutTask< _AccessMode >::Run(), stk::test::sleep::TestTask< _AccessMode >::Run(), stk::test::spinlock::TryLockContendedTask< _AccessMode >::Run(), stk::test::timer::OneShotTimerTask< _AccessMode >::Run(), stk::test::timer::ResetPeriodicTimerTask< _AccessMode >::Run(), stk::test::timer::RestartTimerTask< _AccessMode >::Run(), stk::test::timer::StartOrResetTask< _AccessMode >::Run(), stk_time_now_ms(), stk::test::TEST(), and stk::test::TEST().
| uintptr_t stk::hw::GetTls | ( | ) |
Get thread-local storage (TLS).
Definition at line 62 of file stk_arch_arm-cortex-m.h.
References __stk_forceinline.
|
inlinestatic |
Test whether a task identifier represents an ISR context.
Returns true if tid was produced by GetTid() called from an interrupt service routine, i.e. its upper 20 bits match TID_ISR_N. Use this predicate instead of comparing against TID_ISR_N directly.
| [in] | tid | Task identifier to test. |
true if tid encodes an ISR context, false otherwise. Definition at line 190 of file stk_common.h.
References TID_ISR_N.
|
staticconstexpr |
Compile-time maximum of two values.
Definition at line 541 of file stk_defs.h.
Referenced by stk::memory::AlignBlockSize(), stk::Kernel< TMode, TSize, TStrategy, TPlatform >::KernelTask::GetSleepTicks(), stk::Kernel< stk::KERNEL_DYNAMIC|stk::KERNEL_SYNC, 16U, stk::SwitchStrategyFP32, stk::PlatformDefault >::OnTaskSleepUntil(), and stk::test::TEST().
|
staticconstexpr |
Compile-time minimum of two values.
Definition at line 535 of file stk_defs.h.
Referenced by stk::Kernel< TMode, TSize, TStrategy, TPlatform >::KernelTask::GetSleepTicks(), osSemaphoreNew(), and stk::test::TEST().
| void stk::hw::SetTls | ( | Word | tp | ) |
Set thread-local storage (TLS).
| [in] | tp | TLS value. |
| [in] | tp | TLS value. |
Definition at line 73 of file stk_arch_arm-cortex-m.h.
References __stk_forceinline.
| void stk::Sleep | ( | Timeout | ticks | ) |
Put calling process into a sleep state.
| [in] | ticks | Sleep time (ticks). 0 does not cause yield, use Yield instead. Negative will cause an assertion. |
Definition at line 326 of file stk_helper.h.
References __stk_forceinline, stk::IKernelService::GetInstance(), and stk::IKernelService::Sleep().
Referenced by osDelay(), stk::test::blockpool::BlockingAllocTask< _AccessMode >::Run(), stk::test::blockpool::ConcurrentAllocFreeTask< _AccessMode >::Run(), stk::test::blockpool::StressTask< _AccessMode >::Run(), stk::test::blockpool::TimedAllocSuccessTask< _AccessMode >::Run(), stk::test::blockpool::TimedAllocTimeoutTask< _AccessMode >::Run(), stk::test::condvar::MutexReacquiredTask< _AccessMode >::Run(), stk::test::condvar::NotifyAllWakesTask< _AccessMode >::Run(), stk::test::condvar::NotifyOneOrderTask< _AccessMode >::Run(), stk::test::condvar::NotifyOneWakesTask< _AccessMode >::Run(), stk::test::condvar::NoWaitTimeoutTask< _AccessMode >::Run(), stk::test::condvar::PredicateLoopTask< _AccessMode >::Run(), stk::test::condvar::StressTestTask< _AccessMode >::Run(), stk::test::condvar::TimeoutExpiresTask< _AccessMode >::Run(), stk::test::event::AutoResetBasicTask< _AccessMode >::Run(), stk::test::event::InitialStateTask< _AccessMode >::Run(), stk::test::event::ManualResetBasicTask< _AccessMode >::Run(), stk::test::event::PulseAutoResetTask< _AccessMode >::Run(), stk::test::event::PulseManualResetTask< _AccessMode >::Run(), stk::test::event::ResetManualTask< _AccessMode >::Run(), stk::test::event::TimeoutWaitTask< _AccessMode >::Run(), stk::test::event::TryWaitTask< _AccessMode >::Run(), stk::test::eventflags::ClearTask< _AccessMode >::Run(), stk::test::eventflags::GetTask< _AccessMode >::Run(), stk::test::eventflags::InitialFlagsTask< _AccessMode >::Run(), stk::test::eventflags::MultiWaiterAllTask< _AccessMode >::Run(), stk::test::eventflags::MultiWaiterAnyTask< _AccessMode >::Run(), stk::test::eventflags::NoClearTask< _AccessMode >::Run(), stk::test::eventflags::SetWaitAllTask< _AccessMode >::Run(), stk::test::eventflags::SetWaitAnyTask< _AccessMode >::Run(), stk::test::eventflags::TimeoutTask< _AccessMode >::Run(), stk::test::eventflags::TryWaitTask< _AccessMode >::Run(), stk::test::msgqueue::BlockingGetTask< _AccessMode >::Run(), stk::test::msgqueue::BlockingPutTask< _AccessMode >::Run(), stk::test::msgqueue::PingPongTask< _AccessMode >::Run(), stk::test::msgqueue::ResetTask< _AccessMode >::Run(), stk::test::msgqueue::StressTask< _AccessMode >::Run(), stk::test::msgqueue::TimedGetSuccessTask< _AccessMode >::Run(), stk::test::msgqueue::TimedPutTimeoutTask< _AccessMode >::Run(), stk::test::mutex::BasicLockUnlockTask< _AccessMode >::Run(), stk::test::mutex::FIFOOrderTask< _AccessMode >::Run(), stk::test::mutex::InterTaskCoordinationTask< _AccessMode >::Run(), stk::test::mutex::RecursiveDepthTask< _AccessMode >::Run(), stk::test::mutex::RecursiveLockTask< _AccessMode >::Run(), stk::test::mutex::StressTestTask< _AccessMode >::Run(), stk::test::mutex::TimedLockTask< _AccessMode >::Run(), stk::test::mutex::TryLockTask< _AccessMode >::Run(), stk::test::pipe::BasicWriteReadTask< _AccessMode >::Run(), stk::test::pipe::BulkWriteReadTask< _AccessMode >::Run(), stk::test::pipe::GetSizeIsEmptyTask< _AccessMode >::Run(), stk::test::pipe::MultiProducerConsumerTask< _AccessMode >::Run(), stk::test::pipe::ReadBlocksWhenEmptyTask< _AccessMode >::Run(), stk::test::pipe::StressTestTask< _AccessMode >::Run(), stk::test::pipe::TimeoutTask< _AccessMode >::Run(), stk::test::pipe::WriteBlocksWhenFullTask< _AccessMode >::Run(), stk::test::rwmutex::ConcurrentReadersTask< _AccessMode >::Run(), stk::test::rwmutex::ReaderWriterAlternationTask< _AccessMode >::Run(), stk::test::rwmutex::ReadUnlockWakesWriterTask< _AccessMode >::Run(), stk::test::rwmutex::StressTestTask< _AccessMode >::Run(), stk::test::rwmutex::TimedReadLockTask< _AccessMode >::Run(), stk::test::rwmutex::TimedWriteLockTask< _AccessMode >::Run(), stk::test::rwmutex::TryReadLockWhileWriterTask< _AccessMode >::Run(), stk::test::rwmutex::WriterExclusivityTask< _AccessMode >::Run(), stk::test::rwmutex::WriterPriorityTask< _AccessMode >::Run(), stk::test::rwmutex::WriterStarvationTask< _AccessMode >::Run(), stk::test::semaphore::BasicSignalWaitTask< _AccessMode >::Run(), stk::test::semaphore::BoundedBufferTask< _AccessMode >::Run(), stk::test::semaphore::FIFOOrderTask< _AccessMode >::Run(), stk::test::semaphore::InitialCountTask< _AccessMode >::Run(), stk::test::semaphore::SignalBeforeWaitTask< _AccessMode >::Run(), stk::test::semaphore::StressTestTask< _AccessMode >::Run(), stk::test::semaphore::TimeoutWaitTask< _AccessMode >::Run(), stk::test::semaphore::ZeroTimeoutTask< _AccessMode >::Run(), stk::test::sleep::TestTask< _AccessMode >::Run(), stk::test::spinlock::MutualExclusionTask< _AccessMode >::Run(), stk::test::spinlock::RecursiveLockTask< _AccessMode >::Run(), stk::test::spinlock::RecursiveTryLockTask< _AccessMode >::Run(), stk::test::spinlock::StressTestTask< _AccessMode >::Run(), stk::test::spinlock::TryLockContendedTask< _AccessMode >::Run(), stk::test::spinlock::TryLockFreeTask< _AccessMode >::Run(), stk::test::spinlock::UnlockTransferTask< _AccessMode >::Run(), stk::test::spinlock::YieldUnderContentionTask< _AccessMode >::Run(), stk::test::timer::MultipleTimersTask< _AccessMode >::Run(), stk::test::timer::OneShotTimerTask< _AccessMode >::Run(), stk::test::timer::PeriodicTimerTask< _AccessMode >::Run(), stk::test::timer::ResetPeriodicTimerTask< _AccessMode >::Run(), stk::test::timer::RestartTimerTask< _AccessMode >::Run(), stk::test::timer::SetPeriodTask< _AccessMode >::Run(), stk::test::timer::StartOrResetTask< _AccessMode >::Run(), stk::test::timer::StopTimerTask< _AccessMode >::Run(), stk::test::timer::StressTestTask< _AccessMode >::Run(), SleepMs(), stk_sleep(), stk::test::TEST(), stk::test::TEST(), stk::test::TEST(), stk::test::TEST(), stk::test::TEST(), and stk::test::TestTaskSleep().
|
inlinestatic |
Put calling process into a sleep state.
| [in] | ms | Sleep time (milliseconds). 0 does not cause yield, use Yield instead. Negative will cause an assertion. |
Definition at line 339 of file stk_helper.h.
References GetTicksFromMs(), and Sleep().
Referenced by stk_sleep_ms(), and stk::test::TEST().
| void stk::SleepUntil | ( | Ticks | timestamp | ) |
Put calling process into a sleep state until the specified timestamp.
| [in] | timestamp | Absolute timestamp (ticks). 0 does not cause yield, use Yield instead. Negative will cause an assertion. |
Definition at line 350 of file stk_helper.h.
References __stk_forceinline, stk::IKernelService::GetInstance(), and stk::IKernelService::SleepUntil().
Referenced by osDelayUntil(), stk_sleep_until(), stk::test::TEST(), stk::test::TEST(), stk::test::TEST(), and stk::test::TestTaskSleep().
| void stk::Yield | ( | ) |
Notify scheduler to switch to the next runnable task.
Definition at line 359 of file stk_helper.h.
References __stk_forceinline, stk::IKernelService::GetInstance(), and stk::IKernelService::SwitchToNext().
Referenced by osThreadExit(), osThreadYield(), stk::test::EDFDynamicSchedulingContext::Process(), stk::test::blockpool::ConcurrentAllocFreeTask< _AccessMode >::Run(), stk::test::hrt::TestTask< _AccessMode >::Run(), stk::test::mutex::BasicLockUnlockTask< _AccessMode >::Run(), stk::test::rwmutex::ReadUnlockWakesWriterTask< _AccessMode >::Run(), stk::test::rwmutex::TimedReadLockTask< _AccessMode >::Run(), stk::test::rwmutex::TimedWriteLockTask< _AccessMode >::Run(), stk::test::rwmutex::TryReadLockWhileWriterTask< _AccessMode >::Run(), stk::test::rwmutex::WriterExclusivityTask< _AccessMode >::Run(), stk::test::rwmutex::WriterPriorityTask< _AccessMode >::Run(), stk::test::spinlock::MutualExclusionTask< _AccessMode >::Run(), stk::test::spinlock::RecursiveTryLockTask< _AccessMode >::Run(), stk::test::spinlock::TryLockContendedTask< _AccessMode >::Run(), stk::test::spinlock::TryLockFreeTask< _AccessMode >::Run(), stk::test::timer::PeriodicTimerTask< _AccessMode >::Run(), stk::test::timer::StartOrResetTask< _AccessMode >::Run(), stk_yield(), stk::test::TEST(), stk::test::TEST(), stk::test::TEST(), and stk::test::TEST().
|
staticconstexpr |
Timeout value: return immediately if the synchronization object is not yet signaled (non-blocking poll).
Definition at line 177 of file stk_common.h.
Referenced by CmsisTimeoutToStk(), osMessageQueueGet(), osMessageQueuePut(), osMutexAcquire(), osSemaphoreAcquire(), stk::time::TimerHost::ProcessCommands(), stk::time::TimerHost::PushCommand(), stk::test::condvar::NoWaitTimeoutTask< _AccessMode >::Run(), stk::test::semaphore::ZeroTimeoutTask< _AccessMode >::Run(), stk::sync::Mutex::TimedLock(), stk::sync::MessageQueue::TryGet(), stk::sync::Mutex::TryLock(), stk::sync::RWMutex::TryLock(), stk::sync::MessageQueue::TryPut(), stk::sync::Pipe< Timer *, 32 >::TryRead(), stk::sync::Pipe< Timer *, 32 >::TryReadBulk(), stk::sync::RWMutex::TryReadLock(), stk::sync::EventFlags::TryWait(), stk::sync::Semaphore::TryWait(), stk::sync::Pipe< Timer *, 32 >::TryWrite(), stk::sync::Pipe< Timer *, 32 >::TryWriteBulk(), stk::time::TimerHost::UpdateTime(), stk::sync::ConditionVariable::Wait(), stk::sync::Event::Wait(), stk::sync::EventFlags::Wait(), and stk::sync::Semaphore::Wait().
Bitmask sentinel for ISR-context task identifiers.
The upper 20 bits of the TId space are reserved for ISR contexts. When GetTid() is called from an interrupt service routine, it returns TID_ISR_N | exception_number, where exception_number is the raw value:
This encoding guarantees uniqueness per exception, so two ISRs at different priority levels or with different exception numbers are never treated as the same owner by synchronization primitives.
Task TIds are word-aligned pointers. On all supported Cortex-M and RISC-V targets they fall in the range 0x00000000..0xEFFFFFFF, so no overlap with the 0xFFFFF000..0xFFFFFFFF sentinel range is possible.
IsIsrTid() to test for this sentinel rather than comparing against this constant directly. Definition at line 160 of file stk_common.h.
Referenced by IsIsrTid().
Reserved task/thread id representing zero/none thread id.
Definition at line 165 of file stk_common.h.
Referenced by stk::sync::SpinLock::MakeLocked(), stk::sync::Mutex::Mutex(), stk::sync::SpinLock::SpinLock(), stk::sync::Mutex::TimedLock(), stk::sync::Mutex::Unlock(), stk::sync::SpinLock::Unlock(), and stk::sync::SpinLock::~SpinLock().
|
staticconstexpr |
Timeout value: block indefinitely until the synchronization object is signaled.
Definition at line 171 of file stk_common.h.
Referenced by CmsisTimeoutToStk(), stk::sync::Mutex::Lock(), stk::sync::RWMutex::Lock(), stk::Kernel< stk::KERNEL_DYNAMIC|stk::KERNEL_SYNC, 16U, stk::SwitchStrategyFP32, stk::PlatformDefault >::OnTaskWait(), osThreadJoin(), stk::time::TimerHost::ProcessCommands(), stk::sync::Pipe< Timer *, 32 >::Read(), stk::sync::Pipe< Timer *, 32 >::ReadBulk(), stk::sync::RWMutex::ReadLock(), stk::time::TimerHost::Restart(), stk::test::blockpool::TypedAllocTask< _AccessMode >::Run(), stk::Kernel< TMode, TSize, TStrategy, TPlatform >::KernelTask::ScheduleRemoval(), stk::sync::RWMutex::ScopedTimedLock::ScopedTimedLock(), stk::sync::RWMutex::ScopedTimedReadMutex::ScopedTimedReadMutex(), stk::time::TimerHost::SetPeriod(), stk::time::TimerHost::Start(), stk::time::TimerHost::StartOrReset(), stk::Kernel< stk::KERNEL_DYNAMIC|stk::KERNEL_SYNC, 16U, stk::SwitchStrategyFP32, stk::PlatformDefault >::SuspendTask(), stk::Kernel< TMode, TSize, TStrategy, TPlatform >::KernelTask::WaitObject::Tick(), stk::memory::TimedAlloc(), stk::memory::TimedAllocT(), stk::time::TimerHost::UpdateTime(), stk::sync::EventFlags::Wait(), stk::sync::Pipe< Timer *, 32 >::Write(), stk::sync::Pipe< Timer *, 32 >::WriteBulk(), and stk::sync::MessageQueue::~MessageQueue().