CeDOS - kernel/sched/sched_strats.c

kernel/sched/sched_strats.c (view raw)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "cedos/sched/process.h"

#define NULL ((void*)0)

PROCESS_ID next_schedule(PROCESS_ID current) {
    PROCESS* process = get_process(current);

    if (process != NULL && process->next != NULL) {
        return process->next->id;
    } else {
        PROCESS *first = get_first_process();
        if (first != NULL && first->id != 0) {
            return first->id;
        } else if (first != NULL && first->next != NULL) {
            return first->next->id;
        } else {
            return 0;
        }
    }
}