|   | 35 |  | 
                  
                          |   | 36 |  | 
                  
                          |   | 37 |  === void _ctx_switch() === | 
                  
                          |   | 38 | This function performs a context switch between the running (calling) task and  another runable task, using a round-robin sheduling policy between all tasks allocated to a given processor (static allocation). | 
                  
                          |   | 39 | It selects the next runable task to resume execution.  | 
                  
                          |   | 40 | If the only runable task is the current task, return without context switch. | 
                  
                          |   | 41 | If there is no runable task, the scheduler switch to the default "idle" task. | 
                  
                          |   | 42 | The return address contained in $31 is saved in the current task context (in the ctx[31] slot), and the function actually returns to the address contained in the ctx[31] slot of the next task context. | 
                  
                          |   | 43 |  | 
                  
                          |   | 44 |  === void _ctx_eret() === | 
                  
                          |   | 45 | The address of this function is used to initialise the return address in the "idle" task context. | 
                  
                          |   | 46 |  | 
                  
                          |   | 47 |  === void _idle_task() === | 
                  
                          |   | 48 | This function is executed task when no other task can be executed. |