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>
buf[i] = random() & 0xff;
}
- s->total = 0;
for (i = 0; i < sizeof(buf); i++) {
s->total += buf[i];
}
if (COROUTINE_AVAILABLE) {
struct coroutine_state t;
struct state s = {
+ .total = 0,
};
coroutine_init(&t, clobber, &s, stack);