What are "tasks" (EGU)?

I 'm trying to figure out the way "system calls" are implemented in the SDK.

This far it looks like the calls are made by executing SVC. The SVC exception is kept masked to cause SVpend event and my guess is that the SVpend event is handled by EGU that generates an SWI event out of it. That event is then handled as an interrupt by NVIC, and the SWI interrupt handler then takes care of the system call execution.

Am I even close?

I think it wouldn't hurt to know a little more about EGU. Are there any documents or tutorials about EGU and SWI, and how they are supposed to work.

I think the events are the same as what ARM calls events, but what are "tasks"?

  • Aha, I think I got it. It looks like Nordic calls interrupt signals events (somewhat like ARM), and they can cause interrupts if allowed in NVIC. Events are kind of requests. Tasks are the opposite: kind of  "command signals", like "enable", "start",...

    Same stuff as always, but different terminology.