From 335fee3f36bd491197f8bd987baa6a7390f1750d Mon Sep 17 00:00:00 2001 From: zwelch Date: Sat, 30 May 2009 22:23:12 +0000 Subject: Encapsulate the global "jtag" jtag_interface pointer: - Add jtag_interface_quit, factored from exit_handler() in openocd.c. - Remove its extern declaration. - Add static keyword to its definition. git-svn-id: svn://svn.berlios.de/openocd/trunk@1952 b42882b7-edfa-0310-969c-e2dbd0fdcd60 --- src/jtag/jtag.c | 16 +++++++++++++++- src/jtag/jtag.h | 5 +++-- src/openocd.c | 4 +--- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/jtag/jtag.c b/src/jtag/jtag.c index ecd4931a..c9167f41 100644 --- a/src/jtag/jtag.c +++ b/src/jtag/jtag.c @@ -227,7 +227,7 @@ jtag_interface_t *jtag_interfaces[] = { NULL, }; -jtag_interface_t *jtag = NULL; +static jtag_interface_t *jtag = NULL; /* configuration */ static jtag_interface_t *jtag_interface = NULL; @@ -2407,6 +2407,20 @@ static int jtag_init_inner(struct command_context_s *cmd_ctx) return ERROR_OK; } +int jtag_interface_quit(void) +{ + if (!jtag || !jtag->quit) + return ERROR_OK; + + // close the JTAG interface + int result = jtag->quit(); + if (ERROR_OK != result) + LOG_ERROR("failed: %d", result); + + return ERROR_OK; +} + + int jtag_init_reset(struct command_context_s *cmd_ctx) { int retval; diff --git a/src/jtag/jtag.h b/src/jtag/jtag.h index af4c64da..00a7bc83 100644 --- a/src/jtag/jtag.h +++ b/src/jtag/jtag.h @@ -512,8 +512,6 @@ typedef struct jtag_event_callback_s extern jtag_event_callback_t* jtag_event_callbacks; -extern jtag_interface_t* jtag; /* global pointer to configured JTAG interface */ - extern int jtag_speed; extern int jtag_speed_post_reset; @@ -535,6 +533,9 @@ extern enum reset_types jtag_reset_config; */ extern int jtag_interface_init(struct command_context_s* cmd_ctx); +/// Shutdown the JTAG interface upon program exit. +extern int jtag_interface_quit(void); + /* initialize JTAG chain using only a RESET reset. If init fails, * try reset + init. */ diff --git a/src/openocd.c b/src/openocd.c index 65664464..026a32b3 100644 --- a/src/openocd.c +++ b/src/openocd.c @@ -79,9 +79,7 @@ static int handle_version_command(struct command_context_s *cmd_ctx, char *cmd, static void exit_handler(void) { - /* close JTAG interface */ - if (jtag && jtag->quit) - jtag->quit(); + jtag_interface_quit(); } static int log_target_callback_event_handler(struct target_s *target, enum target_event event, void *priv) -- cgit v1.2.3