Move spc2pcoreid and pcoreid2spc into header file
authorKevin Klues <klueska@cs.berkeley.edu>
Mon, 28 Sep 2015 21:52:33 +0000 (14:52 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 24 Nov 2015 19:48:50 +0000 (14:48 -0500)
All of schedule.c, coreprov.c and corealloc.c will need access to these
functions, and we want them to be fast. To make this possible, we move
the *definition* of these functions into the corerequest.h header file
(otherwise we would just put their declaration in the header). It's a
little unfortunate that we need to extern in the all_pcores variable
(mostly because this ties us to an implementation where all pcores are
allocated next to each other in memory), but it's worth it to make this
call fast.

Signed-off-by: Kevin Klues <klueska@cs.berkeley.edu>
Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/include/corerequest.h
kern/src/schedule.c

index 0b03052..7260fc3 100644 (file)
@@ -23,3 +23,17 @@ struct core_request_data {
        struct sched_pcore_tailq  prov_alloc_me;      /* prov cores alloced us */
        struct sched_pcore_tailq  prov_not_alloc_me;  /* maybe alloc to others */
 };
+
+static inline uint32_t spc2pcoreid(struct sched_pcore *spc)
+{
+       extern struct sched_pcore *all_pcores;
+
+       return spc - all_pcores;
+}
+
+static inline struct sched_pcore *pcoreid2spc(uint32_t pcoreid)
+{
+       extern struct sched_pcore *all_pcores;
+
+       return &all_pcores[pcoreid];
+}
index 352aa47..5877d3e 100644 (file)
@@ -41,8 +41,6 @@ static void add_to_list(struct proc *p, struct proc_list *list);
 static void remove_from_list(struct proc *p, struct proc_list *list);
 static void switch_lists(struct proc *p, struct proc_list *old,
                          struct proc_list *new);
-static uint32_t spc2pcoreid(struct sched_pcore *spc);
-static struct sched_pcore *pcoreid2spc(uint32_t pcoreid);
 static bool is_ll_core(uint32_t pcoreid);
 static void __prov_track_alloc(struct proc *p, uint32_t pcoreid);
 static void __prov_track_dealloc(struct proc *p, uint32_t pcoreid);
@@ -145,16 +143,6 @@ void schedule_init(void)
 #endif /* CONFIG_ARSC_SERVER */
 }
 
-static uint32_t spc2pcoreid(struct sched_pcore *spc)
-{
-       return spc - all_pcores;
-}
-
-static struct sched_pcore *pcoreid2spc(uint32_t pcoreid)
-{
-       return &all_pcores[pcoreid];
-}
-
 /* Round-robins on whatever list it's on */
 static void add_to_list(struct proc *p, struct proc_list *new)
 {