From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41955) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bp4lY-0000md-9v for qemu-devel@nongnu.org; Tue, 27 Sep 2016 22:38:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bp4lW-0005n4-7t for qemu-devel@nongnu.org; Tue, 27 Sep 2016 22:38:35 -0400 Date: Wed, 28 Sep 2016 10:38:24 +0800 From: Fam Zheng Message-ID: <20160928023824.GF1284@lemon> References: <1474989516-18255-1-git-send-email-stefanha@redhat.com> <1474989516-18255-3-git-send-email-stefanha@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1474989516-18255-3-git-send-email-stefanha@redhat.com> Subject: Re: [Qemu-devel] [PATCH v2 2/3] test-coroutine: test qemu_coroutine_entered() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefan Hajnoczi Cc: qemu-devel@nongnu.org, Kevin Wolf , qemu-block@nongnu.org, Roman Pen On Tue, 09/27 16:18, Stefan Hajnoczi wrote: > Signed-off-by: Stefan Hajnoczi > --- > 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