diff mbox

[U-Boot,v2] Add a command to access the system timer

Message ID 1349302497-15457-1-git-send-email-joe.hershberger@ni.com
State Accepted
Delegated to: Tom Rini
Headers show

Commit Message

Joe Hershberger Oct. 3, 2012, 10:14 p.m. UTC
Two sub-commands... start and get.
 * start sets the reference.
 * get prints out the time since the last start (in "<sec>.<msec>" format).
If get is called without start, returns time since boot.
Simple way to benchmark an operation: "timer start;<commands-to-measure>;timer get"

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
---
Changes in v2:
- Added config guard around the command
- Documented in README
- Documented CONFIG_CMD_TIME as being ARM specific
- Style fix ','
- Made function static

 README            |  3 ++-
 common/cmd_misc.c | 27 +++++++++++++++++++++++++++
 2 files changed, 29 insertions(+), 1 deletion(-)

Comments

Tom Rini Oct. 4, 2012, 1:20 a.m. UTC | #1
On Wed, Oct 03, 2012 at 12:14:57PM -0000, Joe Hershberger wrote:
> Two sub-commands... start and get.
>  * start sets the reference.
>  * get prints out the time since the last start (in "<sec>.<msec>" format).
> If get is called without start, returns time since boot.
> Simple way to benchmark an operation: "timer start;<commands-to-measure>;timer get"
> 
> Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>

Applied to u-boot/master, thanks!
diff mbox

Patch

diff --git a/README b/README
index af76b0c..8305e45 100644
--- a/README
+++ b/README
@@ -855,7 +855,8 @@  The following options need to be configured:
 		CONFIG_CMD_SPI		* SPI serial bus support
 		CONFIG_CMD_TFTPSRV	* TFTP transfer in server mode
 		CONFIG_CMD_TFTPPUT	* TFTP put command (upload)
-		CONFIG_CMD_TIME		* run command and report execution time
+		CONFIG_CMD_TIME		* run command and report execution time (ARM specific)
+		CONFIG_CMD_TIMER	* access to the system tick timer
 		CONFIG_CMD_USB		* USB support
 		CONFIG_CMD_CDP		* Cisco Discover Protocol support
 		CONFIG_CMD_MFSL		* Microblaze FSL support
diff --git a/common/cmd_misc.c b/common/cmd_misc.c
index 973b1c2..3b47a0c 100644
--- a/common/cmd_misc.c
+++ b/common/cmd_misc.c
@@ -53,3 +53,30 @@  U_BOOT_CMD(
 	"N\n"
 	"    - delay execution for N seconds (N is _decimal_ !!!)"
 );
+
+#ifdef CONFIG_CMD_TIMER
+static int do_timer(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+	static ulong start;
+
+	if (argc != 2)
+		return CMD_RET_USAGE;
+
+	if (!strcmp(argv[1], "start"))
+		start = get_timer(0);
+
+	if (!strcmp(argv[1], "get")) {
+		ulong msecs = get_timer(start) * 1000 / CONFIG_SYS_HZ;
+		printf("%ld.%03d\n", msecs / 1000, (int)(msecs % 1000));
+	}
+
+	return 0;
+}
+
+U_BOOT_CMD(
+	timer,    2,    1,     do_timer,
+	"access the system timer",
+	"start - Reset the timer reference.\n"
+	"timer get   - Print the time since 'start'."
+);
+#endif