Moves resource requests to procdata (XCC)
[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 /* P wants some cores.  Put them in pc_arr */
34 uint32_t proc_wants_cores(struct proc *p, uint32_t *pc_arr, uint32_t amt_new);
35
36 /* Debugging */
37 void sched_diag(void);
38 void print_idlecoremap(void);
39
40 #endif /* ROS_KERN_SCHEDULE_H */