2013-03-12 01:14 PM
Is there any way to discover if we are running inside any ISR (uart, systick, timers, etc.)? It would avoid dead-locks.
I thought reading IPSR would help, so if ISR_NUMBER is different from 0 (thread mode), then we would be running inside an ISR. But I couldn't find a way to read it.2013-03-12 01:51 PM
Couldn't you tell with consistent usage of Mutex/Semaphore type constructs?
Looking at the processor state seems a bit hackish, you can look at bit 2 of LR when it contains a magic value to see if it was called as an IRQ, or specifically what stack is in use, as I recall. You could also look at what region SP resides in.