On Tue, 09/27 16:18, Stefan Hajnoczi wrote: > Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> > --- > tests/test-coroutine.c | 42 ++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 42 insertions(+) > > diff --git a/tests/test-coroutine.c b/tests/test-coroutine.c > index 6431dd6..abd97c2 100644 > --- a/tests/test-coroutine.c > +++ b/tests/test-coroutine.c > @@ -53,6 +53,47 @@ static void test_self(void) > } > > /* > + * Check that qemu_coroutine_entered() works > + */
Not related to this patch: It's a bit weird that in this file function header comments are followed by a blank line, and in one case it even looks like as odd as this: static void test_order(void) { int i; const struct coroutine_position expected_pos[] = { {1, 1,}, {2, 1}, {1, 2}, {2, 2}, {1, 3} }; do_order_test(); g_assert_cmpint(record_pos, ==, 5); for (i = 0; i < record_pos; i++) { g_assert_cmpint(records[i].func , ==, expected_pos[i].func ); g_assert_cmpint(records[i].state, ==, expected_pos[i].state); } } /* * Lifecycle benchmark */ static void coroutine_fn empty_coroutine(void *opaque) { /* Do nothing */ } > + > +static void coroutine_fn verify_entered_step_2(void *opaque) > +{ > + Coroutine *caller = (Coroutine *)opaque; > + > + g_assert(qemu_coroutine_entered(caller)); > + g_assert(qemu_coroutine_entered(qemu_coroutine_self())); > + qemu_coroutine_yield(); > + > + /* Once more to check it still works after yielding */ > + g_assert(qemu_coroutine_entered(caller)); > + g_assert(qemu_coroutine_entered(qemu_coroutine_self())); > + qemu_coroutine_yield(); > +} > + > +static void coroutine_fn verify_entered_step_1(void *opaque) > +{ > + Coroutine *self = qemu_coroutine_self(); > + Coroutine *coroutine; > + > + g_assert(qemu_coroutine_entered(self)); > + > + coroutine = qemu_coroutine_create(verify_entered_step_2, self); > + g_assert(!qemu_coroutine_entered(coroutine)); > + qemu_coroutine_enter(coroutine); > + g_assert(!qemu_coroutine_entered(coroutine)); > + qemu_coroutine_enter(coroutine); > +} > + > +static void test_entered(void) > +{ > + Coroutine *coroutine; > + > + coroutine = qemu_coroutine_create(verify_entered_step_1, NULL); > + g_assert(!qemu_coroutine_entered(coroutine)); > + qemu_coroutine_enter(coroutine); > +} > + > +/* > * Check that coroutines may nest multiple levels > */ > > @@ -389,6 +430,7 @@ int main(int argc, char **argv) > g_test_add_func("/basic/yield", test_yield); > g_test_add_func("/basic/nesting", test_nesting); > g_test_add_func("/basic/self", test_self); > + g_test_add_func("/basic/entered", test_entered); > g_test_add_func("/basic/in_coroutine", test_in_coroutine); > g_test_add_func("/basic/order", test_order); > if (g_test_perf()) { > -- > 2.7.4 > Reviewed-by: Fam Zheng <f...@redhat.com>