How to determine current context type - interrupt or task

luhu wrote on Sunday, September 21, 2014:

Hello,

Searched a little but didn’t found answer.

Is there some function or other method in FreeRTOS that allows to determine if program is currently in interrupt or process context?
I want to implement a function that will use xQueueSend. But that function might be called both from process or interrupt and I would like to avoid creating another version of that function which will use xQueueSendFromISR.

Best Regards,
Michal

rtel wrote on Sunday, September 21, 2014:

Which port are you using?

Regards.

luhu wrote on Sunday, September 21, 2014:

I am using LPC4330 MCU and base on examples from lpcopen.

Best Regards,
Michal

rtel wrote on Sunday, September 21, 2014:

In which case I think you can ask the hardware for the context as follows:

if( ( portNVIC_INT_CTRL_REG & 0x1F ) == 0 )
{
    /* Not in an interrupt. */
}
else
{
    /* In an interrupt. */
}

(portNVIC_INT_CTRL_REG is already defined, assuming you are using GCC as you mention lpcopen).

Regards.

luhu wrote on Sunday, September 21, 2014:

Thanks for fast reply. Will try this.