mirror of
https://github.com/xemu-project/xemu.git
synced 2025-02-03 18:53:12 +00:00
coroutine: add qemu_coroutine_entered() function
See the doc comments for a description of this new coroutine API. Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Fam Zheng <famz@redhat.com> Message-id: 1474989516-18255-2-git-send-email-stefanha@redhat.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
844c82296f
commit
f643e469f3
@ -92,6 +92,19 @@ Coroutine *coroutine_fn qemu_coroutine_self(void);
|
||||
*/
|
||||
bool qemu_in_coroutine(void);
|
||||
|
||||
/**
|
||||
* Return true if the coroutine is currently entered
|
||||
*
|
||||
* A coroutine is "entered" if it has not yielded from the current
|
||||
* qemu_coroutine_enter() call used to run it. This does not mean that the
|
||||
* coroutine is currently executing code since it may have transferred control
|
||||
* to another coroutine using qemu_coroutine_enter().
|
||||
*
|
||||
* When several coroutines enter each other there may be no way to know which
|
||||
* ones have already been entered. In such situations this function can be
|
||||
* used to avoid recursively entering coroutines.
|
||||
*/
|
||||
bool qemu_coroutine_entered(Coroutine *co);
|
||||
|
||||
|
||||
/**
|
||||
|
@ -146,3 +146,8 @@ void coroutine_fn qemu_coroutine_yield(void)
|
||||
self->caller = NULL;
|
||||
qemu_coroutine_switch(self, to, COROUTINE_YIELD);
|
||||
}
|
||||
|
||||
bool qemu_coroutine_entered(Coroutine *co)
|
||||
{
|
||||
return co->caller;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user