Power fail

When my application detects a power fail I’d like to ‘kill’ the RTOS ( stop all tasks ) so that 100% micro processing resource is available for PF Code. Probably there is no graceful way for code execution to reach PF Code ? I need to execute PF Code directly following execution of code at a certain point within the low priority task that is fully responsible for non volatile storage access ( I’d like to ‘kill’ the RTOS from this task ).
/* Finally start the scheduler. */
vTaskStartScheduler();

/* PF Code: ( all tasks and RTOS are now 'dead' )
/* Save all my data to non volatile storage */
/* Force a micro reset */

/* Will only reach here if there is insufficient heap available to start
the scheduler. */
return 0;

Power fail

Which architecture are you running on? Few ports provide an “end scheduling” function as there is nothing to return to. For example the Cortex-M port re-uses the stack that was used by main(). However, why not perform this processing from any task – or even a high priority task that runs in response to a power fail event? The task can enter a critical section to stop RTOS interrupts interfering with your post power fail processing.

Power fail

I’ll use a critical section as you suggest within my PIC24 architecture. I was just hoping to exit RTOS gracefully rather than reset the micro from within a task i.e. Pre RTOS tasks ( hardware initialization etc. ) RTOS starts Post RTOS tasks ( save power fail data, reset micro )