Thank you writing in detail. Your understanding is mostly correct, just a minor correction:
The above is true when the FreeRTOS API explicitly enters a critical section by calling taskENTER_CRITICAL_FROM_ISR
:
void FreeRTOS_API_FromISR( void )
{
/* Priority 4 interrupt is NOT blocked here. */
taskENTER_CRITICAL_FROM_ISR();
{
/* Priority 4 interrupt is blocked here because all the interrupts upto
* configMAX_SYSCALL_INTERRPUT_PRIORITY are blocked here. */
}
taskEXIT_CRITICAL_FROM_ISR();
/* Priority 4 interrupt is NOT blocked here. */
}