
for (;;) {
    // Test all critical jobs on every iteration.
    if (critical_task0_pending) critical_task0();
    if (critical_task1_pending) critical_task1();

    // "time-slice" medium-priority jobs.
    if (++mediumprio_idx >= MAX_MEDIUMPRIO) mediumprio_idx = 0;
    if (mediumprio_task[mediumprio_idx]) {
        switch (mediumprio_idx) {
            case MEDIUMPRIO_TASK0: mediumprio_task0(); break;
            case MEDIUMPRIO_TASK1: mediumprio_task1(); break;
            ...
            default: alert_internal_error();
        }
        continue;
    }

    // "time-slice" low-priority jobs.
    if (++lowprio_idx >= MAX_LOWPRIO) lowprio_idx = 0;
    if (lowprio_task[lowprio_idx]) {
        switch (lowprio_idx) {
            case LOWPRIO_TASK0: lowprio_task0(); break;
            case LOWPRIO_TASK1: lowprio_task1(); break;
            ...
            default: alert_internal_error();
        }
        continue;
    }
}
