Update checkpatch
[akaros.git] / kern / include / schedule.h
index 2aee5e5..eddcf8b 100644 (file)
@@ -6,32 +6,20 @@
  * Scheduling and dispatching.
  */
 
-#ifndef ROS_KERN_SCHEDULE_H
-#define ROS_KERN_SCHEDULE_H
+#pragma once
 
 #include <ros/common.h>
 #include <sys/queue.h>
+#include <corerequest.h>
 
 struct proc;   /* process.h includes us, but we need pointers now */
 TAILQ_HEAD(proc_list, proc);           /* Declares 'struct proc_list' */
 
-/* The ksched maintains an internal array of these: the global pcore map.  Note
- * the prov_proc and alloc_proc are weak (internal) references, and should only
- * be used as a ref source while the ksched has a valid kref. */
-struct sched_pcore {
-       TAILQ_ENTRY(sched_pcore)        prov_next;                      /* on a proc's prov list */
-       TAILQ_ENTRY(sched_pcore)        alloc_next;                     /* on an alloc list (idle)*/
-       struct proc                                     *prov_proc;                     /* who this is prov to */
-       struct proc                                     *alloc_proc;            /* who this is alloc to */
-};
-TAILQ_HEAD(sched_pcore_tailq, sched_pcore);
-
 /* One of these embedded in every struct proc */
 struct sched_proc_data {
        TAILQ_ENTRY(proc)                       proc_link;                      /* tailq linkage */
        struct proc_list                        *cur_list;                      /* which tailq we're on */
-       struct sched_pcore_tailq        prov_alloc_me;          /* prov cores alloced us */
-       struct sched_pcore_tailq        prov_not_alloc_me;      /* maybe alloc to others */
+       struct core_request_data        crd;                            /* prov/alloc cores */
        /* count of lists? */
        /* other accounting info */
 };
@@ -60,12 +48,12 @@ void __sched_put_idle_cores(struct proc *p, uint32_t *pc_arr, uint32_t num);
 /************** Decision making **************/
 /* Call the main scheduling algorithm.  Not clear yet if the main kernel will
  * ever call this directly. */
-void schedule(void);
+void run_scheduler(void);
 
 /* Proc p's resource desires changed, or something in general that would lead to
  * a new decision.  The process can directly poke the ksched via a syscall, so
  * be careful of abuse. */
-void poke_ksched(struct proc *p, int res_type);
+void poke_ksched(struct proc *p, unsigned int res_type);
 
 /* The calling cpu/core has nothing to do and plans to idle/halt.  This is an
  * opportunity to pick the nature of that halting (low power state, etc), or
@@ -78,10 +66,6 @@ void cpu_bored(void);
  * inappropriate, since we need to know which specific core is now free. */
 void avail_res_changed(int res_type, long change);
 
-/************** Proc's view of the world **************/
-/* How many vcores p will think it can have */
-uint32_t max_vcores(struct proc *p);
-
 /************** Provisioning / Allocating *************/
 /* This section is specific to a provisioning ksched.  Careful calling any of
  * this from generic kernel code, since it might not be present in all kernel
@@ -90,9 +74,7 @@ int provision_core(struct proc *p, uint32_t pcoreid);
 
 /************** Debugging **************/
 void sched_diag(void);
-void print_idlecoremap(void);
 void print_resources(struct proc *p);
 void print_all_resources(void);
-void print_prov_map(void);
-
-#endif /* ROS_KERN_SCHEDULE_H */
+void next_core_to_alloc(uint32_t pcoreid);
+void sort_idle_cores(void);