Catches control-C to make sure any VCD file is flushed
Signed-off-by: Michel Pollet <buserror@gmail.com>
#include <stdio.h>
#include <libgen.h>
#include <string.h>
+#include <signal.h>
#include "sim_avr.h"
#include "sim_elf.h"
#include "sim_core.h"
exit(1);
}
+avr_t * avr = NULL;
+
+void
+sig_int(
+ int sign)
+{
+ printf("signal caught, simavr terminating\n");
+ if (avr)
+ avr_terminate(avr);
+ exit(0);
+}
+
int main(int argc, char *argv[])
{
elf_firmware_t f = {{0}};
if (f_cpu)
f.frequency = f_cpu;
- avr_t * avr = avr_make_mcu_by_name(f.mmcu);
+ avr = avr_make_mcu_by_name(f.mmcu);
if (!avr) {
fprintf(stderr, "%s: AVR '%s' now known\n", argv[0], f.mmcu);
exit(1);
avr_gdb_init(avr);
}
+ signal(SIGINT, sig_int);
+ signal(SIGTERM, sig_int);
+
for (;;)
avr_run(avr);