jtag interfaces: Reduce usage of global for jtag queue 45/945/13
authorEvan Hunter <ehunter@broadcom.com>
Wed, 31 Oct 2012 06:51:45 +0000 (17:51 +1100)
committerAntonio Borneo <borneo.antonio@gmail.com>
Sun, 11 Feb 2024 23:12:03 +0000 (23:12 +0000)
Makes driver interface slightly more flexible.

Change-Id: I2c7f5cb6d014e94a0e6122cbe2f4002c77fbabb9
Signed-off-by: Evan Hunter <ehunter@broadcom.com>
Signed-off-by: David Ryskalczyk <david.rysk@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/945
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Tested-by: jenkins
31 files changed:
src/jtag/commands.c
src/jtag/commands.h
src/jtag/core.c
src/jtag/drivers/amt_jtagaccel.c
src/jtag/drivers/angie.c
src/jtag/drivers/arm-jtag-ew.c
src/jtag/drivers/bitbang.c
src/jtag/drivers/bitbang.h
src/jtag/drivers/bitq.c
src/jtag/drivers/bitq.h
src/jtag/drivers/buspirate.c
src/jtag/drivers/cmsis_dap.c
src/jtag/drivers/ft232r.c
src/jtag/drivers/ftdi.c
src/jtag/drivers/gw16012.c
src/jtag/drivers/jlink.c
src/jtag/drivers/jtag_dpi.c
src/jtag/drivers/jtag_vpi.c
src/jtag/drivers/opendous.c
src/jtag/drivers/openjtag.c
src/jtag/drivers/osbdm.c
src/jtag/drivers/remote_bitbang.c
src/jtag/drivers/rlink.c
src/jtag/drivers/ulink.c
src/jtag/drivers/usb_blaster/usb_blaster.c
src/jtag/drivers/usbprog.c
src/jtag/drivers/vdebug.c
src/jtag/drivers/vsllink.c
src/jtag/drivers/xds110.c
src/jtag/drivers/xlnx-pcie-xvc.c
src/jtag/interface.h

index 43cda8ad4ebd72756ce2dea7c4b40d8721e4f2f3..c36c219233b34996d84669d8c321eec58e43f3e5 100644 (file)
@@ -33,7 +33,7 @@ struct cmd_queue_page {
 static struct cmd_queue_page *cmd_queue_pages;
 static struct cmd_queue_page *cmd_queue_pages_tail;
 
-struct jtag_command *jtag_command_queue;
+static struct jtag_command *jtag_command_queue;
 static struct jtag_command **next_command_pointer = &jtag_command_queue;
 
 void jtag_queue_command(struct jtag_command *cmd)
@@ -147,6 +147,11 @@ void jtag_command_queue_reset(void)
        next_command_pointer = &jtag_command_queue;
 }
 
+struct jtag_command *jtag_command_queue_get(void)
+{
+       return jtag_command_queue;
+}
+
 /**
  * Copy a struct scan_field for insertion into the queue.
  *
index a8c7ffdc66aa69adb907bd81c264929d13fd2a1e..a1096daa77a2a98424573adea1b7ba8c5fa36e9c 100644 (file)
@@ -149,13 +149,11 @@ struct jtag_command {
        struct jtag_command *next;
 };
 
-/** The current queue of jtag_command_s structures. */
-extern struct jtag_command *jtag_command_queue;
-
 void *cmd_queue_alloc(size_t size);
 
 void jtag_queue_command(struct jtag_command *cmd);
 void jtag_command_queue_reset(void);
+struct jtag_command *jtag_command_queue_get(void);
 
 void jtag_scan_field_clone(struct scan_field *dst, const struct scan_field *src);
 enum scan_type jtag_scan_type(const struct scan_command *cmd);
index e2af6c53d94f0a63c7f74200463dc8d4f90ea322..c84d5aa3d3d32e0a263bc12f31565563bb97fe3c 100644 (file)
@@ -951,9 +951,9 @@ int default_interface_jtag_execute_queue(void)
                        return ERROR_OK;
        }
 
-       int result = adapter_driver->jtag_ops->execute_queue();
+       struct jtag_command *cmd = jtag_command_queue_get();
+       int result = adapter_driver->jtag_ops->execute_queue(cmd);
 
-       struct jtag_command *cmd = jtag_command_queue;
        while (debug_level >= LOG_LVL_DEBUG_IO && cmd) {
                switch (cmd->type) {
                        case JTAG_SCAN:
index a4c8f321220bb6675b56f5550077aaac6f2e4ba2..b28ce62ffb234b80896cb22f92c9904b6526d2fe 100644 (file)
@@ -317,9 +317,9 @@ static void amt_jtagaccel_scan(bool ir_scan, enum scan_type type, uint8_t *buffe
        tap_set_state(tap_get_end_state());
 }
 
-static int amt_jtagaccel_execute_queue(void)
+static int amt_jtagaccel_execute_queue(struct jtag_command *cmd_queue)
 {
-       struct jtag_command *cmd = jtag_command_queue;  /* currently processed command */
+       struct jtag_command *cmd = cmd_queue;   /* currently processed command */
        int scan_size;
        enum scan_type type;
        uint8_t *buffer;
index 62079f0156c93b3ddf53a6a18b52fac6d9a488bb..c024667bdb8d5780136a5c0fc24f0490d4fb9dbe 100644 (file)
@@ -233,7 +233,7 @@ static int angie_post_process_scan(struct angie_cmd *angie_cmd);
 static int angie_post_process_queue(struct angie *device);
 
 /* adapter driver functions */
-static int angie_execute_queue(void);
+static int angie_execute_queue(struct jtag_command *cmd_queue);
 static int angie_khz(int khz, int *jtag_speed);
 static int angie_speed(int speed);
 static int angie_speed_div(int speed, int *khz);
@@ -2037,9 +2037,9 @@ static int angie_post_process_queue(struct angie *device)
  * @return on success: ERROR_OK
  * @return on failure: ERROR_FAIL
  */
-static int angie_execute_queue(void)
+static int angie_execute_queue(struct jtag_command *cmd_queue)
 {
-       struct jtag_command *cmd = jtag_command_queue;
+       struct jtag_command *cmd = cmd_queue;
        int ret;
 
        while (cmd) {
index eada67f45ccdbd6d3ec0483c1b0970726a288846..4c50c54c9bd4aa01b59f5197965ff2a3449e8254 100644 (file)
@@ -85,9 +85,9 @@ static struct armjtagew *armjtagew_handle;
 /**************************************************************************
  * External interface implementation */
 
-static int armjtagew_execute_queue(void)
+static int armjtagew_execute_queue(struct jtag_command *cmd_queue)
 {
-       struct jtag_command *cmd = jtag_command_queue;
+       struct jtag_command *cmd = cmd_queue;
        int scan_size;
        enum scan_type type;
        uint8_t *buffer;
index 186d2098aff46328aee3b53eacbac6b5776dda93..8df51764b7339d9b7d588acaa1ad7734d05c1ce0 100644 (file)
@@ -15,6 +15,7 @@
 #include "config.h"
 #endif
 
+#include <jtag/jtag.h>      /* Added to avoid include loop in commands.h */
 #include "bitbang.h"
 #include <jtag/interface.h>
 #include <jtag/commands.h>
@@ -287,9 +288,9 @@ static void bitbang_sleep(unsigned int microseconds)
        }
 }
 
-int bitbang_execute_queue(void)
+int bitbang_execute_queue(struct jtag_command *cmd_queue)
 {
-       struct jtag_command *cmd = jtag_command_queue;  /* currently processed command */
+       struct jtag_command *cmd = cmd_queue;   /* currently processed command */
        int scan_size;
        enum scan_type type;
        uint8_t *buffer;
index 097a5c0d12dbfdd0267ec7f186f9dd496435f583..dc941796e20ffff8b9a7c24944f36be4dce9ff29 100644 (file)
@@ -12,6 +12,7 @@
 #define OPENOCD_JTAG_DRIVERS_BITBANG_H
 
 #include <jtag/swd.h>
+#include <jtag/commands.h>
 
 typedef enum {
        BB_LOW,
@@ -64,7 +65,7 @@ struct bitbang_interface {
 
 extern const struct swd_driver bitbang_swd;
 
-int bitbang_execute_queue(void);
+int bitbang_execute_queue(struct jtag_command *cmd_queue);
 
 extern struct bitbang_interface *bitbang_interface;
 
index 59e4f3574c1c088bb7e079d0e9e271614155e525..2e5cca2a4923eba5ffbf47c53e5fada45d5fb4dd 100644 (file)
@@ -203,11 +203,11 @@ static void bitq_scan(struct scan_command *cmd)
        bitq_scan_field(&cmd->fields[i], 1);
 }
 
-int bitq_execute_queue(void)
+int bitq_execute_queue(struct jtag_command *cmd_queue)
 {
-       struct jtag_command *cmd = jtag_command_queue; /* currently processed command */
+       struct jtag_command *cmd = cmd_queue; /* currently processed command */
 
-       bitq_in_state.cmd = jtag_command_queue;
+       bitq_in_state.cmd = cmd_queue;
        bitq_in_state.field_idx = 0;
        bitq_in_state.bit_pos   = 0;
        bitq_in_state.status    = ERROR_OK;
index 8e06fcf73750167055f4d0b32cfcfa24924b4762..3ed182da4cec4b6f348b421bad2865a76c339579 100644 (file)
@@ -27,7 +27,7 @@ struct bitq_interface {
 
 extern struct bitq_interface *bitq_interface;
 
-int bitq_execute_queue(void);
+int bitq_execute_queue(struct jtag_command *cmd_queue);
 
 void bitq_cleanup(void);
 
index 03b48e68b219b8dbc11db004e7359fd81d71d7a7..3b03337c942d59a091f6295d06ba481eba8dc9c1 100644 (file)
@@ -20,7 +20,7 @@
 
 #undef DEBUG_SERIAL
 /*#define DEBUG_SERIAL */
-static int buspirate_execute_queue(void);
+static int buspirate_execute_queue(struct jtag_command *cmd_queue);
 static int buspirate_init(void);
 static int buspirate_quit(void);
 static int buspirate_reset(int trst, int srst);
@@ -151,10 +151,10 @@ static int buspirate_serial_read(int fd, uint8_t *buf, int size);
 static void buspirate_serial_close(int fd);
 static void buspirate_print_buffer(uint8_t *buf, int size);
 
-static int buspirate_execute_queue(void)
+static int buspirate_execute_queue(struct jtag_command *cmd_queue)
 {
        /* currently processed command */
-       struct jtag_command *cmd = jtag_command_queue;
+       struct jtag_command *cmd = cmd_queue;
        int scan_size;
        enum scan_type type;
        uint8_t *buffer;
index caacc9b91602ea543d956ebda8ab9323fee3d59f..341d35cdfa0683692604563d2b2a5719d58e4682 100644 (file)
@@ -1954,9 +1954,9 @@ static void cmsis_dap_execute_command(struct jtag_command *cmd)
        }
 }
 
-static int cmsis_dap_execute_queue(void)
+static int cmsis_dap_execute_queue(struct jtag_command *cmd_queue)
 {
-       struct jtag_command *cmd = jtag_command_queue;
+       struct jtag_command *cmd = cmd_queue;
 
        while (cmd) {
                cmsis_dap_execute_command(cmd);
index 2d9d9ef34d029843b3b66db73749d9b194c0980d..766f6ddb5d84f76e1eeb9d84fc1c43926021c2b1 100644 (file)
@@ -803,9 +803,9 @@ static void syncbb_scan(bool ir_scan, enum scan_type type, uint8_t *buffer, int
                }
 }
 
-static int syncbb_execute_queue(void)
+static int syncbb_execute_queue(struct jtag_command *cmd_queue)
 {
-       struct jtag_command *cmd = jtag_command_queue; /* currently processed command */
+       struct jtag_command *cmd = cmd_queue; /* currently processed command */
        int scan_size;
        enum scan_type type;
        uint8_t *buffer;
index da5911ac99e696ab1e1927111a84af70be6e848c..2bde93169e19f0823a055da20221c1466e56f18b 100644 (file)
@@ -625,14 +625,14 @@ static void ftdi_execute_command(struct jtag_command *cmd)
        }
 }
 
-static int ftdi_execute_queue(void)
+static int ftdi_execute_queue(struct jtag_command *cmd_queue)
 {
        /* blink, if the current layout has that feature */
        struct signal *led = find_signal_by_name("LED");
        if (led)
                ftdi_set_signal(led, '1');
 
-       for (struct jtag_command *cmd = jtag_command_queue; cmd; cmd = cmd->next) {
+       for (struct jtag_command *cmd = cmd_queue; cmd; cmd = cmd->next) {
                /* fill the write buffer with the desired command */
                ftdi_execute_command(cmd);
        }
index 592e1709928ba28665253f263edf452931ac49fb..a4c6fd0f00914f0f653f6326fb48371b97101663 100644 (file)
@@ -270,9 +270,9 @@ static void gw16012_scan(bool ir_scan, enum scan_type type, uint8_t *buffer, int
        }
 }
 
-static int gw16012_execute_queue(void)
+static int gw16012_execute_queue(struct jtag_command *cmd_queue)
 {
-       struct jtag_command *cmd = jtag_command_queue; /* currently processed command */
+       struct jtag_command *cmd = cmd_queue; /* currently processed command */
        int scan_size;
        enum scan_type type;
        uint8_t *buffer;
index 97dc351fdf83c5351f436d46250e29879469f472..1874557dcd5a7a8fc1483ba49f8fe990afa3134e 100644 (file)
@@ -276,10 +276,10 @@ static int jlink_execute_command(struct jtag_command *cmd)
        return ERROR_OK;
 }
 
-static int jlink_execute_queue(void)
+static int jlink_execute_queue(struct jtag_command *cmd_queue)
 {
        int ret;
-       struct jtag_command *cmd = jtag_command_queue;
+       struct jtag_command *cmd = cmd_queue;
 
        while (cmd) {
                ret = jlink_execute_command(cmd);
index 2a36331efcdf70569ab736d1105cd18069153b53..285f96e4bff44b44b089ea66a18d8e163f68677f 100644 (file)
@@ -222,12 +222,12 @@ static int jtag_dpi_stableclocks(int cycles)
        return jtag_dpi_runtest(cycles);
 }
 
-static int jtag_dpi_execute_queue(void)
+static int jtag_dpi_execute_queue(struct jtag_command *cmd_queue)
 {
        struct jtag_command *cmd;
        int ret = ERROR_OK;
 
-       for (cmd = jtag_command_queue; ret == ERROR_OK && cmd;
+       for (cmd = cmd_queue; ret == ERROR_OK && cmd;
             cmd = cmd->next) {
                switch (cmd->type) {
                case JTAG_RUNTEST:
index c2b3b08083f9f24af15575d48a49ab7eec4c90c5..9dec0d19df7396090308ac58cc635e121116e6f4 100644 (file)
@@ -480,12 +480,12 @@ static int jtag_vpi_stableclocks(int cycles)
        return ERROR_OK;
 }
 
-static int jtag_vpi_execute_queue(void)
+static int jtag_vpi_execute_queue(struct jtag_command *cmd_queue)
 {
        struct jtag_command *cmd;
        int retval = ERROR_OK;
 
-       for (cmd = jtag_command_queue; retval == ERROR_OK && cmd;
+       for (cmd = cmd_queue; retval == ERROR_OK && cmd;
             cmd = cmd->next) {
                switch (cmd->type) {
                case JTAG_RESET:
index 4d9fd998a7bc165bf02b6c5cac01dcce0066e9b8..81b74d40ec62757fd7a478d733a448c6282d26b3 100644 (file)
@@ -99,7 +99,7 @@ static char *opendous_type;
 static const struct opendous_probe *opendous_probe;
 
 /* External interface functions */
-static int opendous_execute_queue(void);
+static int opendous_execute_queue(struct jtag_command *cmd_queue);
 static int opendous_init(void);
 static int opendous_quit(void);
 
@@ -238,9 +238,9 @@ struct adapter_driver opendous_adapter_driver = {
        .jtag_ops = &opendous_interface,
 };
 
-static int opendous_execute_queue(void)
+static int opendous_execute_queue(struct jtag_command *cmd_queue)
 {
-       struct jtag_command *cmd = jtag_command_queue;
+       struct jtag_command *cmd = cmd_queue;
        int scan_size;
        enum scan_type type;
        uint8_t *buffer;
index 086a411d6b5be76118b124a328bfe996a76cef80..ea78ca8fd666827ba3c94789c87cd3d1c08fccda 100644 (file)
@@ -805,9 +805,9 @@ static void openjtag_execute_command(struct jtag_command *cmd)
        }
 }
 
-static int openjtag_execute_queue(void)
+static int openjtag_execute_queue(struct jtag_command *cmd_queue)
 {
-       struct jtag_command *cmd = jtag_command_queue;
+       struct jtag_command *cmd = cmd_queue;
 
        while (cmd) {
                openjtag_execute_command(cmd);
index 84f2fd66a0d48d301851fb8de716665f33947047..8d4fc90d8847761ec62cbbf9fa373d71f95e5683 100644 (file)
@@ -628,7 +628,7 @@ static int osbdm_execute_command(
        return retval;
 }
 
-static int osbdm_execute_queue(void)
+static int osbdm_execute_queue(struct jtag_command *cmd_queue)
 {
        int retval = ERROR_OK;
 
@@ -637,7 +637,7 @@ static int osbdm_execute_queue(void)
                LOG_ERROR("BUG: can't allocate bit queue");
                retval = ERROR_FAIL;
        } else {
-               struct jtag_command *cmd = jtag_command_queue;
+               struct jtag_command *cmd = cmd_queue;
 
                while (retval == ERROR_OK && cmd) {
                        retval = osbdm_execute_command(&osbdm_context, queue, cmd);
index 6d0fba2e406ed57dfc4b277c2f81193ac4f84aa8..c97b6b6abeb04ad95edfeab12ddb36b3c233f19e 100644 (file)
@@ -456,14 +456,14 @@ static const struct command_registration remote_bitbang_command_handlers[] = {
        COMMAND_REGISTRATION_DONE
 };
 
-static int remote_bitbang_execute_queue(void)
+static int remote_bitbang_execute_queue(struct jtag_command *cmd_queue)
 {
        /* safety: the send buffer must be empty, no leftover characters from
         * previous transactions */
        assert(remote_bitbang_send_buf_used == 0);
 
        /* process the JTAG command queue */
-       int ret = bitbang_execute_queue();
+       int ret = bitbang_execute_queue(cmd_queue);
        if (ret != ERROR_OK)
                return ret;
 
index a28e76e013db2f04fb4d8253b674f1fe4a689cb0..1b1f2e4de6019284d440fc35291ff910e3f58509 100644 (file)
@@ -1262,9 +1262,9 @@ static int rlink_scan(struct jtag_command *cmd, enum scan_type type,
        return 0;
 }
 
-static int rlink_execute_queue(void)
+static int rlink_execute_queue(struct jtag_command *cmd_queue)
 {
-       struct jtag_command *cmd = jtag_command_queue;  /* currently processed command */
+       struct jtag_command *cmd = cmd_queue;   /* currently processed command */
        int scan_size;
        enum scan_type type;
        uint8_t *buffer;
index fd29f126e2de769c9d33b28bec6e43532b797b3e..4f23c6c7fa7e67f09ebaaaf7bd9f91f24d2e9cbf 100644 (file)
@@ -227,7 +227,7 @@ static int ulink_post_process_scan(struct ulink_cmd *ulink_cmd);
 static int ulink_post_process_queue(struct ulink *device);
 
 /* adapter driver functions */
-static int ulink_execute_queue(void);
+static int ulink_execute_queue(struct jtag_command *cmd_queue);
 static int ulink_khz(int khz, int *jtag_speed);
 static int ulink_speed(int speed);
 static int ulink_speed_div(int speed, int *khz);
@@ -1905,9 +1905,9 @@ static int ulink_post_process_queue(struct ulink *device)
  * @return on success: ERROR_OK
  * @return on failure: ERROR_FAIL
  */
-static int ulink_execute_queue(void)
+static int ulink_execute_queue(struct jtag_command *cmd_queue)
 {
-       struct jtag_command *cmd = jtag_command_queue;
+       struct jtag_command *cmd = cmd_queue;
        int ret;
 
        while (cmd) {
index 8c37048144990669edfea901f43e6d64e5d3d41a..c84055c4a1cea7bc2b3cdf4dcc6dc080a0fbbdb9 100644 (file)
@@ -765,7 +765,7 @@ static void ublast_initial_wipeout(void)
        tap_set_state(TAP_RESET);
 }
 
-static int ublast_execute_queue(void)
+static int ublast_execute_queue(struct jtag_command *cmd_queue)
 {
        struct jtag_command *cmd;
        static int first_call = 1;
@@ -776,7 +776,7 @@ static int ublast_execute_queue(void)
                ublast_initial_wipeout();
        }
 
-       for (cmd = jtag_command_queue; ret == ERROR_OK && cmd;
+       for (cmd = cmd_queue; ret == ERROR_OK && cmd;
             cmd = cmd->next) {
                switch (cmd->type) {
                case JTAG_RESET:
index aa655ed7e607290b04424b7bdccad4f94de0260c..2d666d07283c42af23292b3e558b30697bdb4745 100644 (file)
@@ -83,9 +83,9 @@ static void usbprog_jtag_write_slice(struct usbprog_jtag *usbprog_jtag, unsigned
 static void usbprog_jtag_set_bit(struct usbprog_jtag *usbprog_jtag, int bit, int value);
 /* static int usbprog_jtag_get_bit(struct usbprog_jtag *usbprog_jtag, int bit); */
 
-static int usbprog_execute_queue(void)
+static int usbprog_execute_queue(struct jtag_command *cmd_queue)
 {
-       struct jtag_command *cmd = jtag_command_queue;  /* currently processed command */
+       struct jtag_command *cmd = cmd_queue;   /* currently processed command */
        int scan_size;
        enum scan_type type;
        uint8_t *buffer;
index 6d9016e9c6f0a1a0a4d3ffbf5acd4ce07f833b80..f1fc4535f3e8591fa1a60c01547cbe787c92fb7e 100644 (file)
@@ -1046,11 +1046,11 @@ static int vdebug_jtag_div(int speed, int *khz)
        return ERROR_OK;
 }
 
-static int vdebug_jtag_execute_queue(void)
+static int vdebug_jtag_execute_queue(struct jtag_command *cmd_queue)
 {
        int rc = ERROR_OK;
 
-       for (struct jtag_command *cmd = jtag_command_queue; rc == ERROR_OK && cmd; cmd = cmd->next) {
+       for (struct jtag_command *cmd = cmd_queue; rc == ERROR_OK && cmd; cmd = cmd->next) {
                switch (cmd->type) {
                case JTAG_RUNTEST:
                        rc = vdebug_jtag_runtest(cmd->cmd.runtest->num_cycles, cmd->cmd.runtest->end_state, !cmd->next);
index 255ff88a2fb04ba5f0bfa64e60783fa4903a864a..34525d5468d695834c14d1e151c1194310ed804c 100644 (file)
@@ -84,9 +84,9 @@ static bool swd_mode;
 
 static struct vsllink *vsllink_handle;
 
-static int vsllink_execute_queue(void)
+static int vsllink_execute_queue(struct jtag_command *cmd_queue)
 {
-       struct jtag_command *cmd = jtag_command_queue;
+       struct jtag_command *cmd = cmd_queue;
        int scan_size;
        enum scan_type type;
        uint8_t *buffer;
index 717295c73c9b003d8b2adf90b1e7f65ef0a96196..11fbaaab2a812f17e0bf8dadbe557ebb9e4233c7 100644 (file)
@@ -1840,9 +1840,9 @@ static void xds110_execute_command(struct jtag_command *cmd)
        }
 }
 
-static int xds110_execute_queue(void)
+static int xds110_execute_queue(struct jtag_command *cmd_queue)
 {
-       struct jtag_command *cmd = jtag_command_queue;
+       struct jtag_command *cmd = cmd_queue;
 
        while (cmd) {
                xds110_execute_command(cmd);
index 6ad0255e71431f4d2a0673efeeb94c662415a282..233ade3f88b9aaa5573cc7ba8296f9993071af25 100644 (file)
@@ -362,9 +362,9 @@ static int xlnx_pcie_xvc_execute_command(struct jtag_command *cmd)
        return ERROR_OK;
 }
 
-static int xlnx_pcie_xvc_execute_queue(void)
+static int xlnx_pcie_xvc_execute_queue(struct jtag_command *cmd_queue)
 {
-       struct jtag_command *cmd = jtag_command_queue;
+       struct jtag_command *cmd = cmd_queue;
        int ret;
 
        while (cmd) {
index 3df424086dd8bcac93f27d94d8462775e8245848..28c1458cb0bb85b8afa50d89335a38f0bd61aaaa 100644 (file)
@@ -187,10 +187,12 @@ struct jtag_interface {
 #define DEBUG_CAP_TMS_SEQ      (1 << 0)
 
        /**
-        * Execute queued commands.
+        * Execute commands in the supplied queue
+        * @param cmd_queue - a linked list of commands to execute
         * @returns ERROR_OK on success, or an error code on failure.
         */
-       int (*execute_queue)(void);
+
+       int (*execute_queue)(struct jtag_command *cmd_queue);
 };
 
 /**

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)