Skip to content
  • rahix's avatar
    fix(lifecycle): Fix epic_sleep() calls delaying load of new app · cf60dfb7
    rahix authored
    When core 1 repeatedly calls `epic_sleep()`, this could delay an
    epic_load() from core 0 because the reset interrupt can only be
    delivered after such a call completed.
    
    To work around this, add calls into `do_load()` to notify the dispatcher
    task that it should return early from calls like `epic_sleep()`.  This
    gets a bit tricky because the dispatcher task also uses
    `ulTaskNotifyTake()` to wake up when new API calls arrive.  To make sure
    we still break out of `epic_sleep()`, we need to call
    `xTaskNotifyGive()` twice in the wait loop.
    cf60dfb7