proc_get_vcoreid() usage clarification
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 30 Apr 2012 20:57:36 +0000 (13:57 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Wed, 5 Sep 2012 21:43:56 +0000 (14:43 -0700)
Don't use it to ask about remote cores.  You could, but you'd be getting
potentially old info, so I just removed the option.  This makes the
systracing code a little slower, but things are a little safer for new
code.

kern/include/process.h
kern/src/process.c
kern/src/syscall.c

index 02ce9bc..4851560 100644 (file)
@@ -82,7 +82,7 @@ void proc_change_to_vcore(struct proc *p, uint32_t new_vcoreid,
                           bool enable_my_notif);
 
 /* Vcoremap info: */
-uint32_t proc_get_vcoreid(struct proc *SAFE p, uint32_t pcoreid);
+uint32_t proc_get_vcoreid(struct proc *p);
 /* TODO: make all of these inline once we gut the Env crap */
 bool vcore_is_mapped(struct proc *p, uint32_t vcoreid);
 uint32_t vcore2vcoreid(struct proc *p, struct vcore *vc);
index b950f41..b375054 100644 (file)
@@ -1289,10 +1289,9 @@ void proc_give(struct proc *p, uint32_t pcoreid)
 
 /* Global version of the helper, for sys_get_vcoreid (might phase that syscall
  * out). */
-uint32_t proc_get_vcoreid(struct proc *SAFE p, uint32_t pcoreid)
+uint32_t proc_get_vcoreid(struct proc *p)
 {
-       struct per_cpu_info *pcpui = &per_cpu_info[pcoreid];
-       return pcpui->owning_vcoreid;
+       return per_cpu_info[core_id()].owning_vcoreid;
 }
 
 /* TODO: make all of these static inlines when we gut the env crap */
index ce4a258..d1124a3 100644 (file)
@@ -245,7 +245,7 @@ static uint32_t sys_getpcoreid(void)
 // this is removed from the user interface
 static size_t sys_getvcoreid(struct proc *p)
 {
-       return proc_get_vcoreid(p, core_id());
+       return proc_get_vcoreid(p);
 }
 
 /************** Process management syscalls **************/
@@ -1457,7 +1457,7 @@ intreg_t syscall(struct proc *p, uintreg_t sc_num, uintreg_t a0, uintreg_t a1,
        if (systrace_flags & SYSTRACE_ON) {
                if ((systrace_flags & SYSTRACE_ALLPROC) || (proc_is_traced(p))) {
                        coreid = core_id();
-                       vcoreid = proc_get_vcoreid(p, coreid);
+                       vcoreid = proc_get_vcoreid(p);
                        if (systrace_flags & SYSTRACE_LOUD) {
                                printk("[%16llu] Syscall %3d (%12s):(%08p, %08p, %08p, %08p, "
                                       "%08p, %08p) proc: %d core: %d vcore: %d\n", read_tsc(),