With regards to monitoring stack usage, the scmRTOS version here (as a library) has the UsedStackSize() method of a process implemented, so you can check how much stack each process needs.
From OS_Target.h, you can see that a separate return stack is not used (SEPARATE_RETURN_STACK 0), and also the context switch scheme is by software interrupt (scmRTOS_CONTEXT_SWITCH_SCHEME 1).
In terms of what happens if you block in an ISR, why not try it? I suspect that you'll crash the mbed with an overflow of unserviced interrupt requests (if they keep coming) since interrupt requests are queued up.
Hey guys, a few quick questions relating to the ScmRTOS if you dont mind:
Once the process stack(s) gets filled up due to context switching, is there a mechanism in place to prevent additional context switches from occurring?
When in an ISR and ScmRTOS interprocess communications are used such as a channel for example, what happens if an attempt is made to push something into a channel and its full. usually the process that is attempting the pushing will go to sleep until the channel is available again but in the case of an ISR, this is not a process so what happens?