Removes side effects from assert() in userspace
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 24 Jan 2013 23:18:01 +0000 (15:18 -0800)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 24 Jan 2013 23:18:01 +0000 (15:18 -0800)
This way we can remove all asserts without affecting the logic of
the program, at the expense of a couple lines here and there.

user/c3po/aio/diskio_aio.c
user/parlib/uthread.c
user/parlib/vcore.c
user/pthread/pthread.c

index f8bfc9a..43c248b 100644 (file)
@@ -123,7 +123,8 @@ int diskio_aio_add_request(iorequest_t* req)
       int len = myevents[0].res;
 
       (void) rreq;
-      assert( rreq = req );
+      rreq = req;
+      assert( rreq );
 
       // set return values
       req->ret = len;
index 32d3c8f..42c9661 100644 (file)
@@ -173,6 +173,7 @@ void __attribute__((noreturn)) uthread_vcore_entry(void)
  * this whenever you are "starting over" with a thread. */
 void uthread_init(struct uthread *new_thread)
 {
+       int ret;
        assert(new_thread);
        new_thread->state = UT_NOT_RUNNING;
        /* They should have zero'd the uthread.  Let's check critical things: */
@@ -181,9 +182,10 @@ void uthread_init(struct uthread *new_thread)
        new_thread->flags |= UTHREAD_SAVED | UTHREAD_FPSAVED;
        /* Get a TLS.  If we already have one, reallocate/refresh it */
        if (new_thread->tls_desc)
-               assert(!__uthread_reinit_tls(new_thread));
+               ret = __uthread_reinit_tls(new_thread);
        else
-               assert(!__uthread_allocate_tls(new_thread));
+               ret = __uthread_allocate_tls(new_thread);
+       assert(!ret);
        uthread_set_tls_var(new_thread, current_uthread, new_thread);
 }
 
index c0571ea..dafec35 100644 (file)
@@ -161,11 +161,13 @@ void vcore_event_init(void)
 /* Helper, picks some sane defaults and changes the process into an MCP */
 void vcore_change_to_m(void)
 {
+       int ret;
        __procdata.res_req[RES_CORES].amt_wanted = 1;
        __procdata.res_req[RES_CORES].amt_wanted_min = 1;       /* whatever */
        assert(!in_multi_mode());
        assert(!in_vcore_context());
-       assert(!sys_change_to_m());
+       ret = sys_change_to_m();
+       assert(!ret);
        assert(in_multi_mode());
        assert(!in_vcore_context());
 }
index f3c8d58..2909113 100644 (file)
@@ -13,7 +13,6 @@
 #include <arch/arch.h>
 #include <sys/queue.h>
 #include <sys/mman.h>
-#include <assert.h>
 #include <event.h>
 #include <ucq.h>
 
@@ -286,7 +285,8 @@ int pthread_attr_destroy(pthread_attr_t *a)
 
 static void __pthread_free_stack(struct pthread_tcb *pt)
 {
-       assert(!munmap(pt->stacktop - pt->stacksize, pt->stacksize));
+       int ret = munmap(pt->stacktop - pt->stacksize, pt->stacksize);
+       assert(!ret);
 }
 
 static int __pthread_allocate_stack(struct pthread_tcb *pt)