test-coroutine: test qemu_coroutine_entered()
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Fam Zheng <famz@redhat.com> Message-id: 1474989516-18255-3-git-send-email-stefanha@redhat.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
		
							parent
							
								
									f643e469f3
								
							
						
					
					
						commit
						afe16f3f47
					
				| 
						 | 
					@ -52,6 +52,47 @@ static void test_self(void)
 | 
				
			||||||
    qemu_coroutine_enter(coroutine);
 | 
					    qemu_coroutine_enter(coroutine);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * 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
 | 
					 * 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/yield", test_yield);
 | 
				
			||||||
    g_test_add_func("/basic/nesting", test_nesting);
 | 
					    g_test_add_func("/basic/nesting", test_nesting);
 | 
				
			||||||
    g_test_add_func("/basic/self", test_self);
 | 
					    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/in_coroutine", test_in_coroutine);
 | 
				
			||||||
    g_test_add_func("/basic/order", test_order);
 | 
					    g_test_add_func("/basic/order", test_order);
 | 
				
			||||||
    if (g_test_perf()) {
 | 
					    if (g_test_perf()) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue