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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Alex Bennée
						Alex Bennée