Commit dc3747065c3e00715808918b54337d99abba6fc3
authorJakob Gruber <jakob.gruber@gmail.com>
Mon, 10 Sep 2012 08:54:00 +0000 (10:54 +0200)
committerJakob Gruber <jakob.gruber@gmail.com>
Mon, 10 Sep 2012 09:40:56 +0000 (11:40 +0200)
This is relevant when running multiple simavr sessions in a single
program.

3 files changed:
simavr/sim/sim_avr.c
simavr/sim/sim_gdb.c
simavr/sim/sim_gdb.h

index 7869f0d497f0067cc12389a90425bd1444355733..d3e67067266e87f789ca3a4363cd72efd906cc67 100644 (file)
@@ -64,6 +64,10 @@ void avr_terminate(avr_t * avr)
 {
        if (avr->special_deinit)
                avr->special_deinit(avr);
+       if (avr->gdb) {
+               avr_deinit_gdb(avr);
+               avr->gdb = NULL;
+       }
        if (avr->vcd) {
                avr_vcd_close(avr->vcd);
                avr->vcd = NULL;
index 5c7dd970f7119260721f8e26198ba25019a4feb7..faa016f3034228cd4875489c67f34f784581c805 100644 (file)
@@ -566,3 +566,12 @@ int avr_gdb_init(avr_t * avr)
        
        return 0;
 }
+
+void avr_deinit_gdb(avr_t * avr)
+{
+       if (avr->gdb->listen != -1)
+          close(avr->gdb->listen);
+       if (avr->gdb->s != -1)
+          close(avr->gdb->s);
+       free(avr->gdb);
+}
index 2c672c3ad6a867b9ff1c5488ecfda94adeef127a..225291bb0bb738eef20dd2d41e6a4e6123f89def 100644 (file)
@@ -39,6 +39,8 @@ enum avr_gdb_watch_type {
 
 int avr_gdb_init(avr_t * avr);
 
+void avr_deinit_gdb(avr_t * avr);
+
 // call from the main AVR decoder thread
 int avr_gdb_processor(avr_t * avr, int sleep);