Merge branch 'master' into net-dev (with code changes listed below besides normal...
[akaros.git] / kern / include / schedule.h
1 /*
2  * Copyright (c) 2009 The Regents of the University of California
3  * Barret Rhoden <brho@cs.berkeley.edu>
4  * See LICENSE for details.
5  *
6  * Scheduling and dispatching.
7  */
8
9 #ifndef ROS_KERN_SCHEDULE_H
10 #define ROS_KERN_SCHEDULE_H
11
12 #include <process.h>
13
14 void schedule_init(void);
15
16 /*
17  * Add a process to the runnable list.  If you do this, do not manually env_run
18  * the process.  It must be selected with schedule().  This also applies to
19  * smp_call_function to indirectly call env_run.  Currently, this is always
20  * called with changing the state to RUNNABLE_S, but in the future, it might
21  * need a RUNNABLE_M instead - but one or the other should be done before
22  * calling this.
23  */
24 void schedule_proc(struct proc *p);
25
26 /* Rip a process out of the runnable list */
27 void deschedule_proc(struct proc *p);
28
29 /* Pick and run a process.  Note that this can return. */
30 void schedule(void);
31
32 /* Debugging */
33 void dump_proclist(struct proc_list *list);
34
35 #endif // !ROS_KERN_SCHEDULE_H