This is an automated email from Gerrit.

Marc Schink ([email protected]) just uploaded a new patch set to 
Gerrit, which you can find at http://openocd.zylin.com/4915

-- gerrit

commit 4800318f6ba1ba6f211be42add40eb1952a74d04
Author: Marc Schink <[email protected]>
Date:   Thu Feb 14 16:11:44 2019 +0100

    target: Add function to remove all breakpoints
    
    Change-Id: I4718926844a2c8bcfd78d7a8792f6ded293548ef
    Signed-off-by: Marc Schink <[email protected]>

diff --git a/src/target/breakpoints.c b/src/target/breakpoints.c
index 9a25a20..4b0ee9b 100644
--- a/src/target/breakpoints.c
+++ b/src/target/breakpoints.c
@@ -330,6 +330,18 @@ static int breakpoint_remove_internal(struct target 
*target, target_addr_t addre
                return 0;
        }
 }
+
+static void breakpoint_remove_all_internal(struct target *target)
+{
+       struct breakpoint *breakpoint = target->breakpoints;
+
+       while (breakpoint) {
+               struct breakpoint *tmp = breakpoint;
+               breakpoint = breakpoint->next;
+               breakpoint_free(target, tmp);
+       }
+}
+
 void breakpoint_remove(struct target *target, target_addr_t address)
 {
        int found = 0;
@@ -348,6 +360,22 @@ void breakpoint_remove(struct target *target, 
target_addr_t address)
                breakpoint_remove_internal(target, address);
 }
 
+void breakpoint_remove_all(struct target *target)
+{
+       if (target->smp) {
+               struct target_list *head;
+               struct target *curr;
+               head = target->head;
+               while (head != (struct target_list *)NULL) {
+                       curr = head->target;
+                       breakpoint_remove_all_internal(curr);
+                       head = head->next;
+               }
+       } else {
+               breakpoint_remove_all_internal(target);
+       }
+}
+
 static void breakpoint_clear_target_internal(struct target *target)
 {
        LOG_DEBUG("Delete all breakpoints for target: %s",
diff --git a/src/target/breakpoints.h b/src/target/breakpoints.h
index 51bd05a..20faf4e 100644
--- a/src/target/breakpoints.h
+++ b/src/target/breakpoints.h
@@ -63,6 +63,7 @@ int context_breakpoint_add(struct target *target,
 int hybrid_breakpoint_add(struct target *target,
                target_addr_t address, uint32_t asid, uint32_t length, enum 
breakpoint_type type);
 void breakpoint_remove(struct target *target, target_addr_t address);
+void breakpoint_remove_all(struct target *target);
 
 struct breakpoint *breakpoint_find(struct target *target, target_addr_t 
address);
 

-- 


_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to