[Pdbg] [PATCH 2/7] mem: Make _putmem consistent with _getmem

Amitay Isaacs amitay at ozlabs.org
Wed Apr 10 18:08:49 AEST 2019


Signed-off-by: Amitay Isaacs <amitay at ozlabs.org>
---
 src/mem.c | 39 +++++++++++++++++++++------------------
 1 file changed, 21 insertions(+), 18 deletions(-)

diff --git a/src/mem.c b/src/mem.c
index fe76c64..421eea3 100644
--- a/src/mem.c
+++ b/src/mem.c
@@ -153,31 +153,34 @@ static int _putmem(uint64_t addr, uint8_t block_size, bool ci)
 {
 	uint8_t *buf;
 	size_t buflen;
-	int rc = 0;
-	struct pdbg_target *adu_target;
-
-	pdbg_for_each_class_target("adu", adu_target)
-		break;
-
-	if (pdbg_target_probe(adu_target) != PDBG_TARGET_ENABLED)
-		return 0;
+	int rc, count = 0;
+	struct pdbg_target *target;
 
 	buf = read_stdin(&buflen);
 	assert(buf);
 
-	pdbg_set_progress_tick(progress_tick);
-	progress_init();
-	rc = mem_write(adu_target, addr, buf, buflen, block_size, ci);
-	progress_end();
-	if (rc) {
-		printf("Unable to write memory\n");
-		free(buf);
-		return 0;
+	pdbg_for_each_class_target("adu", target) {
+		if (pdbg_target_probe(target) != PDBG_TARGET_ENABLED)
+			continue;
+
+		pdbg_set_progress_tick(progress_tick);
+		progress_init();
+		rc = mem_write(target, addr, buf, buflen, block_size, ci);
+		progress_end();
+		if (rc) {
+			printf("Unable to write memory\n");
+			continue;
+		}
+
+		count++;
+		break;
 	}
 
-	printf("Wrote %zu bytes starting at 0x%016" PRIx64 "\n", buflen, addr);
+	if (count > 0)
+		printf("Wrote %zu bytes starting at 0x%016" PRIx64 "\n", buflen, addr);
+
 	free(buf);
-	return 1;
+	return count;
 }
 
 static int putmem(uint64_t addr, struct mem_flags flags)
-- 
2.20.1



More information about the Pdbg mailing list