Bird
0
0

Which code snippet correctly achieves this?

hard📝 Application Q15 of 15
FreeRTOS - Task Priorities

You have two tasks: TaskA with priority 3 and TaskB with priority 5. You want TaskA to temporarily run with higher priority than TaskB during a critical section. Which code snippet correctly achieves this?

TaskHandle_t xTaskA, xTaskB;
// Initially priorities: TaskA=3, TaskB=5
// Critical section starts
_____;
// Critical section ends
vTaskPrioritySet(xTaskA, 3);
AvTaskPrioritySet(xTaskA, 6);
BvTaskPrioritySet(xTaskB, 2);
CvTaskPrioritySet(xTaskA, 5);
DvTaskPrioritySet(xTaskB, 3);
Step-by-Step Solution
Solution:
  1. Step 1: Identify priority requirements

    TaskA must have higher priority than TaskB (which is 5) during the critical section.
  2. Step 2: Choose correct priority change

    Setting TaskA to 6 makes it higher than TaskB's 5. Options A and D lower TaskB's priority instead. vTaskPrioritySet(xTaskA, 5); sets TaskA to 5, equal to TaskB, not higher.
  3. Step 3: Restore original priority after critical section

    After the critical section, TaskA's priority is reset to 3 as shown.
  4. Final Answer:

    vTaskPrioritySet(xTaskA, 6); -> Option A
  5. Quick Check:

    TaskA priority > TaskB priority during critical section [OK]
Quick Trick: Raise TaskA priority above TaskB, then restore after [OK]
Common Mistakes:
  • Setting TaskA priority equal to TaskB
  • Lowering TaskB priority instead of raising TaskA
  • Not restoring original priority after critical section

Want More Practice?

15+ quiz questions · All difficulty levels · Free

Free Signup - Practice All Questions
More FreeRTOS Quizzes