Browse Source

coroutine: Move total initialization outside coroutine

The sample coroutine in api-3 initializes a total to 0, then adds up the
pseudo-random data it has placed into a stack buffer, to ensure that the
compiler won't elide the reading and writing of that buffer.  After the
coroutine has completed, we verify that total is non-zero so that we'll
detect if the coroutine failed to execute entirely.

Except that the initialization of total is within the coroutine itself,
so it could also be non-zero due to it simply being uninitialized.  This
moves the initialization outside the coroutine, to make the test a little
more robust.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
David Gibson 9 years ago
parent
commit
d24c5a0105
1 changed files with 1 additions and 1 deletions
  1. 1 1
      ccan/coroutine/test/api-3.c

+ 1 - 1
ccan/coroutine/test/api-3.c

@@ -27,7 +27,6 @@ static void clobber(void *p)
 		buf[i] = random() & 0xff;
 	}
 
-	s->total = 0;
 	for (i = 0; i < sizeof(buf); i++) {
 		s->total += buf[i];
 	}
@@ -48,6 +47,7 @@ static void test_metadata(struct coroutine_stack *stack)
 	if (COROUTINE_AVAILABLE) {
 		struct coroutine_state t;
 		struct state s = {
+			.total = 0,
 		};
 
 		coroutine_init(&t, clobber, &s, stack);