Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(118)

Unified Diff: common/cmd_time.c

Issue 6670118: Add time measurement command to u-boot (Closed) Base URL: ssh://gitrw.chromium.org:9222/u-boot-next.git@chromeos-v2010.09
Patch Set: Code review Created 9 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « common/Makefile ('k') | include/config_cmd_all.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: common/cmd_time.c
diff --git a/common/cmd_time.c b/common/cmd_time.c
new file mode 100644
index 0000000000000000000000000000000000000000..98c19930c7f670bde03102fa5b5fe709a617ceca
--- /dev/null
+++ b/common/cmd_time.c
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ *
+ * Alternatively, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") version 2 as published by the Free
+ * Software Foundation.
+ */
+
+/* time - run a command and report its run time */
+
+#include <common.h>
+#include <command.h>
+
+static void report_time(unsigned long int cycles)
+{
+#ifdef CONFIG_SYS_HZ
+ unsigned long int minutes, seconds, milliseconds;
+ unsigned long int total_seconds, remainder;
+
+ total_seconds = cycles / CONFIG_SYS_HZ;
+ remainder = cycles % CONFIG_SYS_HZ;
+ minutes = total_seconds / 60;
+ seconds = total_seconds % 60;
+ /* approximate millisecond value */
+ milliseconds = (remainder * 1000 + CONFIG_SYS_HZ / 2) / CONFIG_SYS_HZ;
+
+ printf("time:");
+ if (minutes)
+ printf(" %lu minutes,", minutes);
+ printf(" %lu.%03lu seconds,", seconds, milliseconds);
+ printf(" %lu ticks\n", cycles);
+#else
+ printf("CONFIG_SYS_HZ not defined\n");
+ printf("time: %lu ticks\n", cycles);
+#endif
+}
+
+int do_time(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+ const int target_argc = argc - 1;
+ int retval = 0;
+ unsigned long int cycles = 0;
+ cmd_tbl_t *target_cmdtp = NULL;
+
+ if (argc == 1) {
+ printf("no command provided\n");
+ return 1;
+ }
+
+ /* parse command */
+ target_cmdtp = find_cmd(argv[1]);
+ if (!target_cmdtp) {
+ printf("command not found: %s\n", argv[1]);
+ return 1;
+ }
+
+ if (target_argc > target_cmdtp->maxargs) {
+ printf("maxarags exceeded: %d > %d\n", target_argc,
+ target_cmdtp->maxargs);
+ return 1;
+ }
+
+ /* run the command and report run time */
+ cycles = get_timer_masked();
+ retval = target_cmdtp->cmd(target_cmdtp, 0, target_argc, argv + 1);
+ cycles = get_timer_masked() - cycles;
+
+ putc('\n');
+ report_time(cycles);
+
+ return retval;
+}
+
+U_BOOT_CMD(time, CONFIG_SYS_MAXARGS, 0, do_time,
+ "run a command and report its run time",
+ "command [args...]\n"
+ "the return value of time is the return value of "
+ "the command it executed, "
+ "or non-zero if there is an internal error of time.\n");
« no previous file with comments | « common/Makefile ('k') | include/config_cmd_all.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698