Understanding priority levels of ISR and FreeRTOS APIs

A pictorial representation, if that helps:


            Logical      Numerical
           Priorities    Priorities
           +--------+    +-------+             ^
           |        |    |       |             |
           |        |    |       |             |
           |        |    |       |             | Not masked by FreeRTOS kernel
           | Higher |    | Lower |             | ( FreeRTOS APIs can not be
           |        |    |       |             |    called from these ISRs. )
           |        |    |       |             |
           |        |    |       |             v
           +--------+    +-------+ <---------------- configMAX_SYSCALL_INTERRUPT_PRIORITY
           |        |    |       |             ^
           |        |    |       |             |
           |        |    |       |             |
           |        |    |       |             |
           |        |    |       |             |
           |        |    |       |             |
           |        |    |       |             |
           | Lower  |    |Higher |             | Masked by FreeRTOS Kernel
           |        |    |       |             | ( FreeRTOS APIs can be
           |        |    |       |             |    called from these ISRs. ) 
           |        |    |       |             |
           |        |    |       |             |
           |        |    |       |             |
           |        |    |       |             |
           |        |    |       |             |
           |        |    |       |             |
           +--------+    +-------+             v

So in terms of NUMERICAL PRIORITIES, if configMAX_SYSCALL_INTERRUPT_PRIORITY == 4, then 4, 5, 6 and above are masked during critical sections.

Thanks.

4 Likes
Couldn't run the scheduler after handling timer 5 Interrupt
Scheduler priority in higher then MAX_SYSCALL
Why do we really need to use safe versions of APIs inside interrupts?!
freeRTOS scheduler start resets EXTI-PR1 register
CAN message gets corrupt inside a FreeRTOS task
How do I change the interrupt priority so I could pass relevant assertions?
vListInsert jumps to Default_Handler
ISR routine is not properly running
Task Priorities Limitations
Configure FreeRtos with Groups/Subpriorities on M33
Execution stuck in configASSERT() defined inside vTaskDelay()
Task does not get to run allthough in Ready state
Wakeup a task from ISR
Lsm6dsox interrupt task
FreeRTOS Interrupt Priorities vs. MCU Interrupt Priorities
Getting Hardfault when trigerring interrupt in a task
portDISABLE_INTERRUPTS() and portENABLE_INTERRUPTS(); problems
xSemaphoreGiveFromISR & xSemaphoreTake
STM32F411 going into HardFault when task from interrupt is triggered
Exception is noticed while executing xTaskRemoveFromEventList
Is it atomic TCB transfer from ready/pending lists?
Quetions about the task scheduler
UsageFault after returning from xPortPendSVHandler after sending a notification
Data abort in xQueueGenericReceive
HardFault randomly in xEventGroupWaitBits
Is there any way to free a semaphore from a priority 0 interrupt?
xTaskResumeAll lockup
HardFault_Handler - 2 UART channels
Strange behavior: semaphore deletes itself
[freeRTOS] Second Task creation issue and control stuck everytime in port.c file only
Priorities assert in vPortValidateInterruptPriority