]> git.sur5r.net Git - openocd/commitdiff
Encapsulate the global "jtag" jtag_interface pointer:
authorzwelch <zwelch@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Sat, 30 May 2009 22:23:12 +0000 (22:23 +0000)
committerzwelch <zwelch@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Sat, 30 May 2009 22:23:12 +0000 (22:23 +0000)
- 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
src/jtag/jtag.h
src/openocd.c

index ecd4931afddc3472deddd6b7b07e0484d3301d27..c9167f41aec523696aaa0e831e19c7b1ad4688c7 100644 (file)
@@ -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;
index af4c64da4e0c095b0d7fa3012dccfb95cdc050e9..00a7bc83721e518eacf18d817fa35b7bf215ab93 100644 (file)
@@ -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.
  */
index 656644649e94f865e46c55a776a7847f06be980b..026a32b3f2f1dc062064297a7753fe0489946bb9 100644 (file)
@@ -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)