[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 6/7] test-coroutine: test qemu_coroutine_entered()
From: |
Stefan Hajnoczi |
Subject: |
[Qemu-devel] [PULL 6/7] test-coroutine: test qemu_coroutine_entered() |
Date: |
Wed, 28 Sep 2016 19:15:36 +0100 |
Signed-off-by: Stefan Hajnoczi <address@hidden>
Reviewed-by: Fam Zheng <address@hidden>
Message-id: address@hidden
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
- [Qemu-devel] [PULL 0/7] Block patches, Stefan Hajnoczi, 2016/09/28
- [Qemu-devel] [PULL 1/7] block: mirror: fix wrong comment of mirror_start, Stefan Hajnoczi, 2016/09/28
- [Qemu-devel] [PULL 2/7] aio-posix: avoid unnecessary aio_epoll_enabled() calls, Stefan Hajnoczi, 2016/09/28
- [Qemu-devel] [PULL 5/7] coroutine: add qemu_coroutine_entered() function, Stefan Hajnoczi, 2016/09/28
- [Qemu-devel] [PULL 7/7] linux-aio: fix re-entrant completion processing, Stefan Hajnoczi, 2016/09/28
- [Qemu-devel] [PULL 4/7] libqos: fix qvring_init(), Stefan Hajnoczi, 2016/09/28
- [Qemu-devel] [PULL 3/7] iothread: check iothread->ctx before aio_context_unref to avoid assertion, Stefan Hajnoczi, 2016/09/28
- [Qemu-devel] [PULL 6/7] test-coroutine: test qemu_coroutine_entered(),
Stefan Hajnoczi <=
- Re: [Qemu-devel] [PULL 0/7] Block patches, Peter Maydell, 2016/09/28