[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 2/3] test-coroutine: test qemu_coroutine_entered()
From: |
Stefan Hajnoczi |
Subject: |
[Qemu-devel] [PATCH 2/3] test-coroutine: test qemu_coroutine_entered() |
Date: |
Tue, 27 Sep 2016 15:06:56 +0100 |
Signed-off-by: Stefan Hajnoczi <address@hidden>
---
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
+ */
+
+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
- Re: [Qemu-devel] [PATCH 1/3] coroutine: add qemu_coroutine_entered() function, (continued)
[Qemu-devel] [PATCH 3/3] linux-aio: fix re-entrant completion processing, Stefan Hajnoczi, 2016/09/27
- Re: [Qemu-devel] [PATCH 3/3] linux-aio: fix re-entrant completion processing, Roman Penyaev, 2016/09/27
- Re: [Qemu-devel] [PATCH 3/3] linux-aio: fix re-entrant completion processing, Stefan Hajnoczi, 2016/09/27
- Re: [Qemu-devel] [PATCH 3/3] linux-aio: fix re-entrant completion processing, Roman Penyaev, 2016/09/27
- Re: [Qemu-devel] [PATCH 3/3] linux-aio: fix re-entrant completion processing, Fam Zheng, 2016/09/27
- Re: [Qemu-devel] [PATCH 3/3] linux-aio: fix re-entrant completion processing, Roman Penyaev, 2016/09/28
- Re: [Qemu-devel] [PATCH 3/3] linux-aio: fix re-entrant completion processing, Fam Zheng, 2016/09/28
- Re: [Qemu-devel] [PATCH 3/3] linux-aio: fix re-entrant completion processing, Roman Penyaev, 2016/09/28
[Qemu-devel] [PATCH 2/3] test-coroutine: test qemu_coroutine_entered(),
Stefan Hajnoczi <=