#include "server.h"
#include <target/target.h>
#include <target/target_request.h>
+#include <target/openrisc/jsp_server.h>
#include "openocd.h"
#include "tcl_server.h"
#include "telnet_server.h"
/* shutdown_openocd == 1: exit the main event loop, and quit the debugger */
static int shutdown_openocd;
+/* set the polling period to 100ms */
+static int polling_period = 100;
+
static int add_connection(struct service *service, struct command_context *cmd_ctx)
{
socklen_t address_size;
(char *)&flag, /* the cast is historical cruft */
sizeof(int)); /* length of option value */
- LOG_INFO("accepting '%s' connection from %s", service->name, service->port);
+ LOG_INFO("accepting '%s' connection on tcp/%s", service->name, service->port);
retval = service->new_connection(c);
if (retval != ERROR_OK) {
close_socket(c->fd);
struct service *next = c->next;
if (c->name)
- free((void *)c->name);
+ free(c->name);
if (c->type == CONNECTION_PIPE) {
if (c->fd != -1)
close(c->fd);
}
if (c->port)
- free((void *)c->port);
+ free(c->port);
if (c->priv)
free(c->priv);
tv.tv_usec = 0;
retval = socket_select(fd_max + 1, &read_fds, NULL, NULL, &tv);
} else {
- /* Every 100ms */
- tv.tv_usec = 100000;
+ /* Every 100ms, can be changed with "poll_period" command */
+ tv.tv_usec = polling_period * 1000;
/* Only while we're sleeping we'll let others run */
openocd_sleep_prelude();
kept_alive();
shutdown_openocd = 1;
+ return ERROR_COMMAND_CLOSE_CONNECTION;
+}
+
+COMMAND_HANDLER(handle_poll_period_command)
+{
+ if (CMD_ARGC == 0)
+ LOG_WARNING("You need to set a period value");
+ else
+ COMMAND_PARSE_NUMBER(int, CMD_ARGV[0], polling_period);
+
+ LOG_INFO("set servers polling period to %ums", polling_period);
+
return ERROR_OK;
}
.usage = "",
.help = "shut the server down",
},
+ {
+ .name = "poll_period",
+ .handler = &handle_poll_period_command,
+ .mode = COMMAND_ANY,
+ .usage = "",
+ .help = "set the servers polling period",
+ },
COMMAND_REGISTRATION_DONE
};
if (ERROR_OK != retval)
return retval;
+ retval = jsp_register_commands(cmd_ctx);
+ if (ERROR_OK != retval)
+ return retval;
+
return register_commands(cmd_ctx, NULL, server_command_handlers);
}
-SERVER_PORT_COMMAND()
+COMMAND_HELPER(server_port_command, unsigned short *out)
{
switch (CMD_ARGC) {
case 0:
return ERROR_OK;
}
-SERVER_PIPE_COMMAND()
+COMMAND_HELPER(server_pipe_command, char **out)
{
switch (CMD_ARGC) {
case 0:
LOG_WARNING("unable to change server port after init");
return ERROR_COMMAND_ARGUMENT_INVALID;
}
- const char *t = strdup(CMD_ARGV[0]);
- free((void *)*out);
- *out = t;
+ free(*out);
+ *out = strdup(CMD_ARGV[0]);
break;
}
default: