Jon Doron <ari...@gmail.com> writes:
> Signed-off-by: Jon Doron <ari...@gmail.com> Reviewed-by: Alex Bennée <alex.ben...@linaro.org> > --- > gdbstub.c | 43 ++++++++++++++++++++++++++++++++----------- > 1 file changed, 32 insertions(+), 11 deletions(-) > > diff --git a/gdbstub.c b/gdbstub.c > index 621d689868..c47ef7dd9c 100644 > --- a/gdbstub.c > +++ b/gdbstub.c > @@ -1498,6 +1498,30 @@ static void handle_detach(GdbCmdContext *gdb_ctx, void > *user_ctx) > put_packet(s, "OK"); > } > > +static void handle_thread_alive(GdbCmdContext *gdb_ctx, void *user_ctx) > +{ > + CPUState *cpu; > + > + if (!gdb_ctx->num_params) { > + put_packet(gdb_ctx->s, "E22"); > + return; > + } > + > + if (gdb_ctx->params[0].thread_id.kind == GDB_READ_THREAD_ERR) { > + put_packet(gdb_ctx->s, "E22"); > + return; > + } > + > + cpu = gdb_get_cpu(gdb_ctx->s, gdb_ctx->params[0].thread_id.pid, > + gdb_ctx->params[0].thread_id.tid); > + if (!cpu) { > + put_packet(gdb_ctx->s, "E22"); > + return; > + } > + > + put_packet(gdb_ctx->s, "OK"); > +} > + > static int gdb_handle_packet(GDBState *s, const char *line_buf) > { > CPUState *cpu; > @@ -1798,17 +1822,14 @@ static int gdb_handle_packet(GDBState *s, const char > *line_buf) > } > break; > case 'T': > - thread_kind = read_thread_id(p, &p, &pid, &tid); > - if (thread_kind == GDB_READ_THREAD_ERR) { > - put_packet(s, "E22"); > - break; > - } > - cpu = gdb_get_cpu(s, pid, tid); > - > - if (cpu != NULL) { > - put_packet(s, "OK"); > - } else { > - put_packet(s, "E22"); > + { > + static const GdbCmdParseEntry thread_alive_cmd_desc = { > + .handler = handle_thread_alive, > + .cmd = "T", > + .cmd_startswith = 1, > + .schema = "t0" > + }; > + cmd_parser = &thread_alive_cmd_desc; > } > break; > case 'q': -- Alex Bennée