mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-26 20:03:54 -06:00
plugins: add [pre|post]fork helpers to linux-user
Special care needs to be taken in ensuring locks are in a consistent state across fork events. Add helpers so the plugin system can ensure that. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Fixes: https://gitlab.com/qemu-project/qemu/-/issues/358 Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Tested-by: Daniel P. Berrangé <berrange@redhat.com> Message-Id: <20221004115221.2174499-1-alex.bennee@linaro.org>
This commit is contained in:
parent
37e62694e4
commit
f7e15affa8
3 changed files with 46 additions and 0 deletions
|
@ -526,6 +526,26 @@ void qemu_plugin_user_exit(void)
|
|||
qemu_plugin_atexit_cb();
|
||||
}
|
||||
|
||||
/*
|
||||
* Helpers for *-user to ensure locks are sane across fork() events.
|
||||
*/
|
||||
|
||||
void qemu_plugin_user_prefork_lock(void)
|
||||
{
|
||||
qemu_rec_mutex_lock(&plugin.lock);
|
||||
}
|
||||
|
||||
void qemu_plugin_user_postfork(bool is_child)
|
||||
{
|
||||
if (is_child) {
|
||||
/* should we just reset via plugin_init? */
|
||||
qemu_rec_mutex_init(&plugin.lock);
|
||||
} else {
|
||||
qemu_rec_mutex_unlock(&plugin.lock);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Call this function after longjmp'ing to the main loop. It's possible that the
|
||||
* last instruction of a TB might have used helpers, and therefore the
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue