gdb_server: improved gdb load performance
[fw/openocd] / src / server / tcl_server.c
index 40a0428d7a8dbac2eabd87b96a0899757caabcc2..a88c4365268f613b06ee63e7734bc5da4cea8062 100644 (file)
@@ -81,13 +81,14 @@ static int tcl_new_connection(struct connection *connection)
 
 static int tcl_input(struct connection *connection)
 {
+       Jim_Interp *interp = (Jim_Interp *)connection->priv;
        int retval;
        int i;
        ssize_t rlen;
        const char *result;
        int reslen;
        struct tcl_connection *tclc;
-       char in[256];
+       unsigned char in[256];
 
        rlen = read_socket(connection->fd, &in, sizeof(in));
        if (rlen <= 0) {
@@ -156,7 +157,7 @@ static int tcl_closed(struct connection *connection)
        return ERROR_OK;
 }
 
-int tcl_init(void)
+int tcl_init(struct command_context *cmd_ctx)
 {
        int retval;
 
@@ -166,7 +167,9 @@ int tcl_init(void)
                return ERROR_OK;
        }
 
-       retval = add_service("tcl", CONNECTION_TCP, tcl_port, 1, tcl_new_connection, tcl_input, tcl_closed, NULL);
+       retval = add_service("tcl", CONNECTION_TCP, tcl_port, 1,
+                       &tcl_new_connection, &tcl_input,
+                       &tcl_closed, cmd_ctx->interp);
        return retval;
 }
 
@@ -175,10 +178,20 @@ COMMAND_HANDLER(handle_tcl_port_command)
        return CALL_COMMAND_HANDLER(server_port_command, &tcl_port);
 }
 
+static const struct command_registration tcl_command_handlers[] = {
+       {
+               .name = "tcl_port",
+               .handler = handle_tcl_port_command,
+               .mode = COMMAND_CONFIG,
+               .help = "Specify port on which to listen "
+                       "for incoming Tcl syntax.  "
+                       "No arguments reports Tcl port; zero disables.",
+               .usage = "[port_num]",
+       },
+       COMMAND_REGISTRATION_DONE
+};
+
 int tcl_register_commands(struct command_context *cmd_ctx)
 {
-       register_command(cmd_ctx, NULL, "tcl_port",
-                       handle_tcl_port_command, COMMAND_CONFIG,
-                       "port on which to listen for incoming TCL syntax");
-       return ERROR_OK;
+       return register_commands(cmd_ctx, NULL, tcl_command_handlers);
 }