Context switching through an ISR in RTEMS

Gedare Bloom gedare at rtems.org
Wed Aug 12 19:26:19 UTC 2020


On Wed, Aug 12, 2020 at 11:33 AM Utkarsh Rai <utkarsh.rai60 at gmail.com> wrote:
>
> Hello,
> I have been testing my code for thread stack isolation against various tests( Some written by me, and remaining already present). One of the limitations that I have found is that I encounter fatal errors whenever a context switch takes place through an ISR. Can you please explain how the context switching procedure works when an interrupt occurs. When I use gdb for stepping through the code it asynchronously moves to context switching code from the executing thread( for example psx16 test).
> For thread stack protection,  the part that deals with context switching simply 'sets 'the memory entries of the heir stack and 'unsets' that of the executing stack.

There are two issues to start: interrupt stacks and dispatching from an ISR.

I think you can start by reading some of the documentation:
https://docs.rtems.org/branches/master/c-user/interrupt_manager.html#processing-an-interrupt

https://docs.rtems.org/branches/master/c-user/scheduling_concepts.html#dispatching-tasks

https://docs.rtems.org/branches/master/c-user/config/general.html#configure-interrupt-stack-size

https://docs.rtems.org/branches/master/cpu-supplement/port.html#interrupt-processing

You can also find some material in rtems-docs.git/porting -- I don't
know where that gets generated.

Continue to ask questions, and writing blog posts.


More information about the devel mailing list