05759578bfa9bc726dbdeb9d05794d5887a95fb9
[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 /* _S is runnable, tell the ksched to try to run it. */
17 void schedule_scp(struct proc *p);
18 /* _M exists.  Tell the ksched about it. */
19 void register_mcp(struct proc *p);
20 /* to remove from these lists, simply proc_destroy - the ksched will notice */
21
22 void schedule(void);
23
24 /* Take a look at proc's resource (temp interface) */
25 void poke_ksched(struct proc *p, int res_type);
26
27 /* Gets called when a pcore becomes idle (like in proc yield) */
28 void put_idle_core(uint32_t coreid);
29
30 /* How many vcores p will think it can have */
31 uint32_t max_vcores(struct proc *p);
32
33 /* Debugging */
34 void sched_diag(void);
35 void print_idlecoremap(void);
36 void print_resources(struct proc *p);
37 void print_all_resources(void);
38
39 #endif /* ROS_KERN_SCHEDULE_H */