replay: make locking visible outside replay code
The replay_mutex_lock/unlock/locked functions are now going to be used for ensuring lock-step behaviour between the two threads. Make them public API functions and also provide stubs for non-QEMU builds on common paths. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru> Message-Id: <20180227095242.1060.16601.stgit@pasha-VirtualBox> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
180d30bebe
commit
a36544d34c
@ -48,6 +48,19 @@ extern ReplayMode replay_mode;
|
||||
/* Name of the initial VM snapshot */
|
||||
extern char *replay_snapshot;
|
||||
|
||||
/* Replay locking
|
||||
*
|
||||
* The locks are needed to protect the shared structures and log file
|
||||
* when doing record/replay. They also are the main sync-point between
|
||||
* the main-loop thread and the vCPU thread. This was a role
|
||||
* previously filled by the BQL which has been busy trying to reduce
|
||||
* its impact across the code. This ensures blocks of events stay
|
||||
* sequential and reproducible.
|
||||
*/
|
||||
|
||||
void replay_mutex_lock(void);
|
||||
void replay_mutex_unlock(void);
|
||||
|
||||
/* Replay process control functions */
|
||||
|
||||
/*! Enables recording or saving event log with specified parameters */
|
||||
|
@ -181,7 +181,7 @@ void replay_mutex_destroy(void)
|
||||
qemu_mutex_destroy(&lock);
|
||||
}
|
||||
|
||||
static bool replay_mutex_locked(void)
|
||||
bool replay_mutex_locked(void)
|
||||
{
|
||||
return replay_locked;
|
||||
}
|
||||
|
@ -100,12 +100,12 @@ int64_t replay_get_qword(void);
|
||||
void replay_get_array(uint8_t *buf, size_t *size);
|
||||
void replay_get_array_alloc(uint8_t **buf, size_t *size);
|
||||
|
||||
/* Mutex functions for protecting replay log file */
|
||||
/* Mutex functions for protecting replay log file and ensuring
|
||||
* synchronisation between vCPU and main-loop threads. */
|
||||
|
||||
void replay_mutex_init(void);
|
||||
void replay_mutex_destroy(void);
|
||||
void replay_mutex_lock(void);
|
||||
void replay_mutex_unlock(void);
|
||||
bool replay_mutex_locked(void);
|
||||
|
||||
/*! Checks error status of the file. */
|
||||
void replay_check_error(void);
|
||||
|
@ -72,3 +72,11 @@ uint64_t blkreplay_next_id(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void replay_mutex_lock(void)
|
||||
{
|
||||
}
|
||||
|
||||
void replay_mutex_unlock(void)
|
||||
{
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user