#ifndef __SCHEDULER_H #define __SCHEDULER_H #include #include struct scheduler; #include "process.h" struct scheduler { /** global simulated time */ int clock; /** number of processes */ int live_threads; /** reference to current process */ struct process *current; /* list of scheduled events */ struct list event_list; }; void sched_unschedule(struct scheduler *sched, struct process *p); void sched_schedule(struct scheduler *sched, struct process *p, int time); void sched_pass_baton(struct scheduler *sched, struct process *p); void sched_pass_baton_and_die(struct scheduler *sched, struct process *p); void sched_next_event(struct scheduler *sched, bool); void sched_passivate(struct scheduler *sched); void sched_reactivate(struct scheduler *sched, struct process *p, int delay); void sched_reactivate_now(struct scheduler *sched, struct process *p); void sched_activate(struct scheduler *sched, struct process *p, int time); void sched_activate_now(struct scheduler *sched, struct process *p); void sched_hold(struct scheduler *sched, int delay); void sched_run_simulation(struct scheduler *sched); void sched_print_ev_list(struct scheduler *self); struct scheduler *sched_create(void); #endif /* __SCHEDULER_H */