27 static_assert(
stk::Min(10, 20) == 10,
"Min failed at compile time");
28 static_assert(
stk::Max(10, 20) == 20,
"Max failed at compile time");
42 CHECK_EQUAL(2147483647,
stk::Max(0, 2147483647));
59 CHECK_EQUAL(1, result);
75TEST(UserTask, GetStackSize)
84TEST(UserTask, GetStackSizeBytes)
93TEST(UserTask, GetStackSpace)
138 CHECK_EQUAL((
Word)&taskw, taskw.
GetId());
145TEST(UserTask, TaskWUnsupportedHrt)
154 CHECK_TEXT(
false,
"expecting assertion - task with weights do not support HRT");
174 CHECK_TRUE(NULL != wrapper.
GetStack());
204 ListEntry(int32_t
id) : m_id(
id) {}
214 CHECK_EQUAL_ZERO(list.GetSize());
215 CHECK_TRUE(list.IsEmpty());
216 CHECK_TRUE(NULL == list.GetFirst());
217 CHECK_TRUE(NULL == list.GetLast());
225 ListEntry e1(1), e2(2), e3(3);
228 CHECK_EQUAL(&e1, list.GetFirst());
229 CHECK_EQUAL(&e1, list.GetLast());
230 CHECK_EQUAL(&list, e1.GetHead());
233 CHECK_EQUAL(&e2, list.GetFirst());
234 CHECK_EQUAL(&e1, list.GetLast());
237 CHECK_EQUAL(&e3, list.GetFirst());
238 CHECK_EQUAL(&e1, list.GetLast());
240 CHECK_EQUAL(3, list.GetSize());
246 ListEntry e1(1), e2(2), e3(3);
249 CHECK_EQUAL(&e1, list.GetFirst());
250 CHECK_EQUAL(&e1, list.GetLast());
251 CHECK_EQUAL(&list, e1.GetHead());
254 CHECK_EQUAL(&e1, list.GetFirst());
255 CHECK_EQUAL(&e2, list.GetLast());
258 CHECK_EQUAL(&e1, list.GetFirst());
259 CHECK_EQUAL(&e3, list.GetLast());
261 CHECK_EQUAL(3, list.GetSize());
267 ListEntry e1(1), e2(2), e3(3);
275 CHECK_EQUAL(&e2, list.GetFirst());
276 CHECK_EQUAL(&e3, list.GetLast());
280 CHECK_EQUAL(&e3, list.GetFirst());
281 CHECK_EQUAL(&e3, list.GetLast());
285 CHECK_EQUAL_ZERO(list.GetSize());
286 CHECK_TRUE(list.IsEmpty());
287 CHECK_TRUE(NULL == list.GetFirst());
288 CHECK_TRUE(NULL == list.GetLast());
294 ListEntry e1(1), e2(2), e3(3);
302 CHECK_EQUAL(&e1, list.GetFirst());
303 CHECK_EQUAL(&e2, list.GetLast());
307 CHECK_EQUAL(&e1, list.GetFirst());
308 CHECK_EQUAL(&e1, list.GetLast());
312 CHECK_EQUAL_ZERO(list.GetSize());
313 CHECK_TRUE(list.IsEmpty());
314 CHECK_TRUE(NULL == list.GetFirst());
315 CHECK_TRUE(NULL == list.GetLast());
321 ListEntry e1(1), e2(2), e3(3);
329 CHECK_EQUAL_ZERO(list.GetSize());
330 CHECK_TRUE(list.IsEmpty());
331 CHECK_TRUE(NULL == list.GetFirst());
332 CHECK_TRUE(NULL == list.GetLast());
338 ListEntry e1(1), e2(2), e3(3);
344 ListHead::DLEntryType *itr = list.GetFirst();
345 CHECK_EQUAL(&e1, itr);
347 itr = itr->GetNext();
348 CHECK_EQUAL(&e2, itr);
350 itr = itr->GetNext();
351 CHECK_EQUAL(&e3, itr);
353 itr = itr->GetNext();
354 CHECK_EQUAL(&e1, itr);
360 ListEntry e1(1), e2(2), e3(3);
367 list.RelinkTo(list2);
369 CHECK_EQUAL_ZERO(list.GetSize());
370 CHECK_TRUE(list.IsEmpty());
371 CHECK_TRUE(NULL == list.GetFirst());
372 CHECK_TRUE(NULL == list.GetLast());
374 CHECK_EQUAL(3, list2.GetSize());
375 CHECK_EQUAL(&list2, e1.GetHead());
376 CHECK_EQUAL(&list2, e2.GetHead());
377 CHECK_EQUAL(&list2, e3.GetHead());
Namespace of STK package.
uintptr_t Word
Native processor word type.
static constexpr T Max(T a, T b)
Compile-time maximum of two values.
@ STACK_SIZE_MIN
Minimum stack size in elements of Word. Used as a lower bound for all stack allocations (user task,...
static constexpr T Min(T a, T b)
Compile-time minimum of two values.
Memory-related primitives.
Namespace of the test inventory.
TestContext g_TestContext
Global instance of the TestContext.
Concrete implementation of IKernel.
void Initialize(uint32_t resolution_us=PERIODICITY_DEFAULT)
Initialize kernel.
void Start()
Start the scheduler. This call does not return until all tasks have exited (KERNEL_DYNAMIC mode) or i...
void AddTask(ITask *user_task)
Register task for a soft real-time (SRT) scheduling.
virtual size_t GetStackSpace()
Get available stack space.
virtual const char * GetTraceName() const
Override in subclass to supply a name for SEGGER SystemView tracing. Returns NULL by default.
size_t GetStackSizeBytes() const
Get size of the memory in bytes.
virtual TId GetId() const
Get object's own address as its Id. Unique per task instance, requires no manual assignment.
size_t GetStackSize() const
Get number of elements of the stack memory array.
virtual int32_t GetWeight() const
Default weight of 1. Override in subclass if custom scheduling weight is needed.
Word * GetStack() const
Get pointer to the stack memory.
virtual const char * GetTraceName() const
Override in subclass to supply a name for SEGGER SystemView tracing. Returns NULL by default.
size_t GetStackSize() const
Get number of elements of the stack memory array.
virtual int32_t GetWeight() const
Returns the compile-time weight _Weight.
virtual void OnDeadlineMissed(uint32_t duration)
Hard Real-Time mode is unsupported for weighted tasks. Triggers an assertion if called.
virtual TId GetId() const
Get object's own address as its Id. Unique per task instance, requires no manual assignment.
size_t GetStackSizeBytes() const
Get size of the memory in bytes.
Adapts an externally-owned stack memory array to the IStackMemory interface.
size_t GetStackSize() const
Get number of elements in the wrapped stack array.
StackMemoryDef< _StackSize >::Type MemoryType
The concrete array type that this wrapper accepts, equivalent to StackMemoryDef<_StackSize>::Type.
size_t GetStackSizeBytes() const
Get size of the wrapped stack array in bytes.
Word * GetStack() const
Get pointer to the first element of the wrapped stack array.
Intrusive doubly-linked list container. Manages a collection of DListEntry nodes embedded in host obj...
Intrusive doubly-linked list node. Embed this as a base class in any object (T) that needs to partici...
Throwable class for catching assertions from STK_ASSERT_HANDLER().
Task mock for SwitchStrategySmoothWeightedRoundRobin and similar algorithms.