parlib: Don't require zeroing for uthread_init()
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 13 Sep 2017 19:53:49 +0000 (15:53 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 14 Sep 2017 20:37:58 +0000 (16:37 -0400)
uthread_init() is meant to be called on a thread so that can be run again.
Instead of memsetting the entire thing to 0 (which is large), we should set
the things we care about to initial values.

Note we were never actually zeroing the threads before - we just would
catch bugs on occasion.  The important stuff is flags and sysc, so that's
what we zero.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
user/parlib/uthread.c

index 85f7ea0..3e7443b 100644 (file)
@@ -307,8 +307,8 @@ void uthread_init(struct uthread *new_thread, struct uth_thread_attr *attr)
                new_thread->sigstate.mask = 0;
        __sigemptyset(&new_thread->sigstate.pending);
        new_thread->sigstate.data = NULL;
-       /* They should have zero'd the uthread.  Let's check critical things: */
-       assert(!new_thread->flags && !new_thread->sysc);
+       new_thread->flags = 0;
+       new_thread->sysc = NULL;
        /* the utf holds the GP context of the uthread (set by the 2LS earlier).
         * There is no FP context to be restored yet.  We only save the FPU when we
         * were interrupted off a core. */