From df4cf0615f4103b42ca35cacb504126b5f55ac08 Mon Sep 17 00:00:00 2001 From: zwelch Date: Sun, 31 May 2009 11:30:59 +0000 Subject: [PATCH] Add target_get_gdb_reg_list wrapper: - replaces all calls to target->type->get_gdb_reg_list. - add documentation in target_s to warn not to invoke callback directly. git-svn-id: svn://svn.berlios.de/openocd/trunk@1964 b42882b7-edfa-0310-969c-e2dbd0fdcd60 --- src/server/gdb_server.c | 8 ++++---- src/target/target.c | 6 ++++++ src/target/target.h | 12 +++++++++++- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/server/gdb_server.c b/src/server/gdb_server.c index c0127388..4a6bc035 100644 --- a/src/server/gdb_server.c +++ b/src/server/gdb_server.c @@ -947,7 +947,7 @@ int gdb_get_registers_packet(connection_t *connection, target_t *target, char* p LOG_DEBUG("-"); #endif - if ((retval = target->type->get_gdb_reg_list(target, ®_list, ®_list_size)) != ERROR_OK) + if ((retval = target_get_gdb_reg_list(target, ®_list, ®_list_size)) != ERROR_OK) { return gdb_error(connection, retval); } @@ -1005,7 +1005,7 @@ int gdb_set_registers_packet(connection_t *connection, target_t *target, char *p return ERROR_SERVER_REMOTE_CLOSED; } - if ((retval = target->type->get_gdb_reg_list(target, ®_list, ®_list_size)) != ERROR_OK) + if ((retval = target_get_gdb_reg_list(target, ®_list, ®_list_size)) != ERROR_OK) { return gdb_error(connection, retval); } @@ -1057,7 +1057,7 @@ int gdb_get_register_packet(connection_t *connection, target_t *target, char *pa LOG_DEBUG("-"); #endif - if ((retval = target->type->get_gdb_reg_list(target, ®_list, ®_list_size)) != ERROR_OK) + if ((retval = target_get_gdb_reg_list(target, ®_list, ®_list_size)) != ERROR_OK) { return gdb_error(connection, retval); } @@ -1092,7 +1092,7 @@ int gdb_set_register_packet(connection_t *connection, target_t *target, char *pa LOG_DEBUG("-"); - if ((retval = target->type->get_gdb_reg_list(target, ®_list, ®_list_size)) != ERROR_OK) + if ((retval = target_get_gdb_reg_list(target, ®_list, ®_list_size)) != ERROR_OK) { return gdb_error(connection, retval); } diff --git a/src/target/target.c b/src/target/target.c index 4a60cc49..7a4548cc 100644 --- a/src/target/target.c +++ b/src/target/target.c @@ -543,6 +543,12 @@ int target_bulk_write_memory(struct target_s *target, } +int target_get_gdb_reg_list(struct target_s *target, + struct reg_s **reg_list[], int *reg_list_size) +{ + return target->type->get_gdb_reg_list(target, reg_list, reg_list_size); +} + int target_run_algorithm(struct target_s *target, int num_mem_params, mem_param_t *mem_params, int num_reg_params, reg_param_t *reg_param, diff --git a/src/target/target.h b/src/target/target.h index 9674c473..1b288938 100644 --- a/src/target/target.h +++ b/src/target/target.h @@ -151,7 +151,9 @@ typedef struct target_type_s int (*soft_reset_halt_imp)(struct target_s *target); int (*soft_reset_halt)(struct target_s *target); - /* target register access for gdb. + /** + * Target register access for GDB. Do @b not call this function + * directly, use target_get_gdb_reg_list() instead. * * Danger! this function will succeed even if the target is running * and return a register list with dummy values. @@ -400,6 +402,14 @@ extern void target_set_examined(struct target_s *target); /// Reset the @c examined flag for the given target. extern void target_reset_examined(struct target_s *target); +/** + * Obtain the registers for GDB. + * + * This routine is a wrapper for target->type->get_gdb_reg_list. + */ +extern int target_get_gdb_reg_list(struct target_s *target, + struct reg_s **reg_list[], int *reg_list_size); + /** * Run an algorithm on the @a target given. * -- 2.39.2