diff options
author | Paul Selkirk <paul@psgd.org> | 2017-05-13 13:14:56 -0400 |
---|---|---|
committer | Paul Selkirk <paul@psgd.org> | 2017-05-13 13:21:35 -0400 |
commit | a7ee9a7b76a4ec90d9f864adfc4342f13f8bd499 (patch) | |
tree | 4f7743242aae7da758d769ae7e4220a97a096378 /projects/hsm | |
parent | 65b94ef5ba1981c74a99cb43ee768fbf480c698b (diff) | |
parent | 7ef51e89d5a1d7d75cb0b8d3832327beb46319dd (diff) |
Merge branch 'task_metrics' into profiling
Diffstat (limited to 'projects/hsm')
-rw-r--r-- | projects/hsm/Makefile | 4 | ||||
-rw-r--r-- | projects/hsm/mgmt-task.c | 34 |
2 files changed, 37 insertions, 1 deletions
diff --git a/projects/hsm/Makefile b/projects/hsm/Makefile index 4df60d7..9a75b92 100644 --- a/projects/hsm/Makefile +++ b/projects/hsm/Makefile @@ -30,6 +30,10 @@ LIBS += $(LIBPROF_BLD)/libprof.a LDFLAGS += --specs=rdimon.specs -lc -lrdimon endif +ifdef DO_TASK_METRICS +CFLAGS += -DDO_TASK_METRICS +endif + all: $(PROJ:=.elf) %.elf: %.o $(BOARD_OBJS) $(OBJS) $(LIBS) diff --git a/projects/hsm/mgmt-task.c b/projects/hsm/mgmt-task.c index a1ae7e6..1658a80 100644 --- a/projects/hsm/mgmt-task.c +++ b/projects/hsm/mgmt-task.c @@ -69,10 +69,42 @@ static int cmd_task_show(struct cli_def *cli, const char *command, char *argv[], return CLI_OK; } +#ifdef DO_TASK_METRICS +static int cmd_task_show_metrics(struct cli_def *cli, const char *command, char *argv[], int argc) +{ + struct task_metrics tm; + + task_get_metrics(&tm); + + cli_print(cli, "avg time between yields: %ld.%06ld sec", tm.avg.tv_sec, tm.avg.tv_usec); + cli_print(cli, "max time between yields: %ld.%06ld sec", tm.max.tv_sec, tm.max.tv_usec); + + return CLI_OK; +} + +static int cmd_task_reset_metrics(struct cli_def *cli, const char *command, char *argv[], int argc) +{ + task_reset_metrics(); + + return CLI_OK; +} +#endif + void configure_cli_task(struct cli_def *cli) { struct cli_command *c = cli_register_command(cli, NULL, "task", NULL, 0, 0, NULL); /* task show */ - cli_register_command(cli, c, "show", cmd_task_show, 0, 0, "Show the active tasks"); + struct cli_command *c_show = cli_register_command(cli, c, "show", cmd_task_show, 0, 0, "Show the active tasks"); + +#ifdef DO_TASK_METRICS + /* task show metrics */ + cli_register_command(cli, c_show, "metrics", cmd_task_show_metrics, 0, 0, "Show task metrics"); + + /* task reset */ + struct cli_command *c_reset = cli_register_command(cli, c, "reset", NULL, 0, 0, NULL); + + /* task reset metrics */ + cli_register_command(cli, c_reset, "metrics", cmd_task_reset_metrics, 0, 0, "Reset task metrics"); +#endif } |