void Task::loop() { uint8_t oldSREG = SREG; cli(); Task* current = rlr; SREG = oldSREG; if (current != 0) { int t = current->body(); uint8_t oldSREG = SREG; cli(); current->state = suspended; rlr = current->next; if (t >= 0) { current->doWakeup(t); } SREG = oldSREG; } }