Re: [Qemu-devel] [PATCH v9 03/27] gdbstub: Implement thread_alive (T pkt) with new infra
Jon Doron writes: > Signed-off-by: Jon Doron Reviewed-by: Alex Bennée > --- > 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, , , ); > -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 = _alive_cmd_desc; > } > break; > case 'q': -- Alex Bennée
Re: [Qemu-devel] [PATCH v9 03/27] gdbstub: Implement thread_alive (T pkt) with new infra
Jon Doron writes: > Signed-off-by: Jon Doron Reviewed-by: Alex Bennée > --- > 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, , , ); > -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 = _alive_cmd_desc; > } > break; > case 'q': -- Alex Bennée