Stop the emulation on ^C and finish the traces
This commit is contained in:
		
							parent
							
								
									9d7ff947b1
								
							
						
					
					
						commit
						626aa84814
					
				@ -1,8 +1,18 @@
 | 
			
		||||
#include "emu.h"
 | 
			
		||||
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <signal.h>
 | 
			
		||||
#include "common.h"
 | 
			
		||||
 | 
			
		||||
static volatile int run = 1;
 | 
			
		||||
 | 
			
		||||
static void stop_emulation(int dummy)
 | 
			
		||||
{
 | 
			
		||||
	UNUSED(dummy);
 | 
			
		||||
	run = 0;
 | 
			
		||||
	signal(SIGINT, SIG_DFL);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
main(int argc, char *argv[])
 | 
			
		||||
{
 | 
			
		||||
@ -21,9 +31,11 @@ main(int argc, char *argv[])
 | 
			
		||||
	if (emu_connect(emu) != 0)
 | 
			
		||||
		die("emu_connect failed\n");
 | 
			
		||||
 | 
			
		||||
	signal(SIGINT, stop_emulation);
 | 
			
		||||
 | 
			
		||||
	err("emulation starts");
 | 
			
		||||
	int ret = 0;
 | 
			
		||||
	while ((ret = emu_step(emu)) == 0);
 | 
			
		||||
	while (run && (ret = emu_step(emu)) == 0);
 | 
			
		||||
 | 
			
		||||
	if (ret < 0) {
 | 
			
		||||
		err("emu_step failed");
 | 
			
		||||
@ -34,6 +46,9 @@ main(int argc, char *argv[])
 | 
			
		||||
		ret = 0;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (run == 0)
 | 
			
		||||
		err("stopping emulation by user (^C again to abort)");
 | 
			
		||||
 | 
			
		||||
	if (emu_finish(emu) != 0) {
 | 
			
		||||
		err("emu_finish failed");
 | 
			
		||||
		ret = 1;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user