Removes unnecessary memset() from pop_ros_tf
authorBarret Rhoden <brho@cs.berkeley.edu>
Sat, 26 Jan 2013 01:48:43 +0000 (17:48 -0800)
committerBarret Rhoden <brho@cs.berkeley.edu>
Sat, 26 Jan 2013 01:51:46 +0000 (17:51 -0800)
Was adding quite a bit (~22ns) to context switch overhead.

tests/pthread_test.c
user/parlib/include/i686/vcore.h

index 283472d..9c07536 100644 (file)
@@ -71,6 +71,10 @@ int main(int argc, char** argv)
                pthread_can_vcore_request(FALSE);       /* 2LS won't manage vcores */
                pthread_lib_init();                                     /* gives us one vcore */
                vcore_request(nr_vcores - 1);           /* ghetto incremental interface */
                pthread_can_vcore_request(FALSE);       /* 2LS won't manage vcores */
                pthread_lib_init();                                     /* gives us one vcore */
                vcore_request(nr_vcores - 1);           /* ghetto incremental interface */
+               for (int i = 0; i < nr_vcores; i++) {
+                       printf("Vcore %d mapped to pcore %d\n", i,
+                              __procinfo.vcoremap[i].pcoreid);
+               }
        }
 
        /* create and join on yield */
        }
 
        /* create and join on yield */
index bb31e6a..9be8f19 100644 (file)
@@ -79,7 +79,6 @@ static inline void pop_ros_tf(struct user_trapframe *tf, uint32_t vcoreid)
        rst->notif_disab_loc = (uint32_t)&vcpd->notif_disabled;
        rst->notif_pend_loc = (uint32_t)&vcpd->notif_pending;
        rst->sysc = &rst->local_sysc;   /* point to the local one */
        rst->notif_disab_loc = (uint32_t)&vcpd->notif_disabled;
        rst->notif_pend_loc = (uint32_t)&vcpd->notif_pending;
        rst->sysc = &rst->local_sysc;   /* point to the local one */
-       memset(rst->sysc, 0, sizeof(struct syscall));
        /* Need to prep the async sysc in case we need to notify ourselves */
        rst->sysc->num = SYS_self_notify;
        rst->sysc->arg0 = vcoreid;      /* arg 1 & 2 already = 0 (null notif, no u_ne)*/
        /* Need to prep the async sysc in case we need to notify ourselves */
        rst->sysc->num = SYS_self_notify;
        rst->sysc->arg0 = vcoreid;      /* arg 1 & 2 already = 0 (null notif, no u_ne)*/