IDLE Stacks Not Allocated via User Provided Stack Allocator

Joel Sherrill joel at rtems.org
Wed Sep 29 22:43:53 UTC 2021


Hi

In Feb 2020, idle thread stack memory was changed to be statically
allocated which is good for most RTEMS deployments. However, it is
broken when you REALLY need it to be allocated by the plugin stack
allocator.

The paravirtualized environment that tripped over this provides stack
memory protection. A special area of memory is reserved for stacks and
the processor and host OS enforce that the stack pointer is always
within the reserved memory segment. This was possible prior to 5
branching which is what the current RTEMS support for that environment
is based on.

The code which needs adjusting is a combination of threadcreateidle.c
and confdefs/percpu.h which reserves the memory. My current thinking
is to add another stack allocator hook for the idle stacks and have it
default to a method which does the current mechanism. This default
method would be defines in percpu.h and instantiated unless the user
configures another method.

Thoughts?

--joel


More information about the devel mailing list