9
0
Fork 0

Merge branch 'pu-time' into next

This commit is contained in:
Sascha Hauer 2011-08-04 09:03:38 +02:00
commit 24eb43256f
4 changed files with 71 additions and 0 deletions

View File

@ -97,6 +97,16 @@ endchoice
endif
config CMD_TIME
bool "time"
help
Just like the unix time command this command allows to measure the
execution time of a command. Note: barebox does not use interrupts,
so the system timer can overrun during the execution of the command
resulting in incorrect results. The timer gets updated in the function
checking for ctrl-c, so the time command can be used with commands
which are interruptible with ctrl-c.
endmenu
menu "file commands "

View File

@ -57,3 +57,4 @@ obj-$(CONFIG_CMD_LOGIN) += login.o
obj-$(CONFIG_CMD_LED) += led.o
obj-$(CONFIG_CMD_LED_TRIGGER) += trigger.o
obj-$(CONFIG_CMD_USB) += usb.o
obj-$(CONFIG_CMD_TIME) += time.o

View File

@ -483,6 +483,9 @@ static int do_mem_cp(struct command *cmdtp, int argc, char *argv[])
}
count -= r;
if (ctrlc())
goto out;
}
if (count) {

57
commands/time.c Normal file
View File

@ -0,0 +1,57 @@
#include <common.h>
#include <command.h>
#include <clock.h>
#include <asm-generic/div64.h>
#include <malloc.h>
static int do_time(struct command *cmdtp, int argc, char *argv[])
{
int i;
unsigned char *buf;
u64 start, end, diff64;
unsigned long diff;
int len = 0;
if (argc < 2)
return COMMAND_ERROR_USAGE;
for (i = 1; i < argc; i++)
len += strlen(argv[i]) + 1;
buf = xzalloc(len);
for (i = 1; i < argc; i++) {
strcat(buf, argv[i]);
strcat(buf, " ");
}
start = get_time_ns();
run_command(buf, 0);
end = get_time_ns();
diff64 = end - start;
do_div(diff64, 1000000);
diff = diff64;
printf("time: %ldms\n", diff);
free(buf);
return 0;
}
BAREBOX_CMD_HELP_START(time)
BAREBOX_CMD_HELP_USAGE("time <command>\n")
BAREBOX_CMD_HELP_SHORT("note: This command depends on <command> being interruptible,\n")
BAREBOX_CMD_HELP_SHORT("Otherwise the timer may overrun resulting in incorrect results\n")
BAREBOX_CMD_HELP_END
BAREBOX_CMD_START(time)
.cmd = do_time,
.usage = "measure execution time of a command",
BAREBOX_CMD_HELP(cmd_time_help)
BAREBOX_CMD_END