45,9 → 45,13 |
#include "cmd.h" |
|
static void cmd_break(int argc, char *argv[]); |
void cmd_go(int argc, char *argv[]); |
static void cmd_ct(int argc, char *argv[]); |
static void cmd_go(int argc, char *argv[]); |
void cmd_help(int argc, char *argv[]); |
static void cmd_pwt(int argc, char *argv[]); |
static void cmd_read(int argc, char *argv[]); |
static void cmd_step(int argc, char *argv[]); |
static void cmd_threads(int argc, char *argv[]); |
static void cmd_quit(int argc, char *argv[]); |
|
volatile bool quit = false; |
54,9 → 58,12 |
|
cmd_desc_t cmd_table[] = { |
{ 1, "break", cmd_break }, |
{ 1, "ct", cmd_ct }, |
{ 0, "go", cmd_go }, |
{ 0, "help", cmd_help }, |
{ 0, "pwt", cmd_pwt }, |
{ 2, "read", cmd_read }, |
{ 0, "threads", cmd_threads }, |
{ 0, "quit", cmd_quit }, |
{ -1, NULL, NULL } |
}; |
72,6 → 79,27 |
arch_breakpoint_add(addr); |
} |
|
static void cmd_ct(int argc, char *argv[]) |
{ |
int i; |
int tid; |
|
(void)argc; |
tid = strtoul(argv[1], NULL, 0); |
|
for (i = 0; i < n_threads; ++i) { |
if (thread_id[i] == tid) break; |
} |
|
if (thread_id[i] == tid) { |
cons_printf("changed working thread to: %d [hash 0x%x]\n", |
thread_id[cwt], thread_hash[cwt]); |
} else { |
cons_printf("no such thread\n"); |
} |
} |
|
|
void cmd_go(int argc, char *argv[]) |
{ |
fcv_broadcast(&go_cv); |
135,7 → 163,29 |
} |
} |
|
void cmd_step(int argc, char *argv[]) |
{ |
fcv_broadcast(&go_cv); |
} |
|
void cmd_pwt(int argc, char *argv[]) |
{ |
(void)argc; (void)argv; |
cons_printf("working thread: %d [hash 0x%x]\n", thread_id[cwt], |
thread_hash[cwt]); |
} |
|
void cmd_threads(int argc, char *argv[]) |
{ |
int i; |
|
(void)argc; (void)argv; |
for (i = 0; i < n_threads; ++i) { |
cons_printf("%d [hash 0x%x]\n", thread_id[i], thread_hash[i]); |
} |
} |
|
|
static void cmd_quit(int argc, char *argv[]) |
{ |
(void)argc; (void)argv; |