xref: /openbmc/u-boot/cmd/time.c (revision e8f80a5a)
1*83d290c5STom Rini // SPDX-License-Identifier: GPL-2.0+
22e192b24SSimon Glass /*
32e192b24SSimon Glass  * Copyright (c) 2011 The Chromium OS Authors.
42e192b24SSimon Glass  */
52e192b24SSimon Glass 
62e192b24SSimon Glass #include <common.h>
72e192b24SSimon Glass #include <command.h>
82e192b24SSimon Glass 
report_time(ulong cycles)92e192b24SSimon Glass static void report_time(ulong cycles)
102e192b24SSimon Glass {
112e192b24SSimon Glass 	ulong minutes, seconds, milliseconds;
122e192b24SSimon Glass 	ulong total_seconds, remainder;
132e192b24SSimon Glass 
142e192b24SSimon Glass 	total_seconds = cycles / CONFIG_SYS_HZ;
152e192b24SSimon Glass 	remainder = cycles % CONFIG_SYS_HZ;
162e192b24SSimon Glass 	minutes = total_seconds / 60;
172e192b24SSimon Glass 	seconds = total_seconds % 60;
182e192b24SSimon Glass 	/* approximate millisecond value */
192e192b24SSimon Glass 	milliseconds = (remainder * 1000 + CONFIG_SYS_HZ / 2) / CONFIG_SYS_HZ;
202e192b24SSimon Glass 
212e192b24SSimon Glass 	printf("\ntime:");
222e192b24SSimon Glass 	if (minutes)
232e192b24SSimon Glass 		printf(" %lu minutes,", minutes);
242e192b24SSimon Glass 	printf(" %lu.%03lu seconds\n", seconds, milliseconds);
252e192b24SSimon Glass }
262e192b24SSimon Glass 
do_time(cmd_tbl_t * cmdtp,int flag,int argc,char * const argv[])272e192b24SSimon Glass static int do_time(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
282e192b24SSimon Glass {
292e192b24SSimon Glass 	ulong cycles = 0;
302e192b24SSimon Glass 	int retval = 0;
31146dda39STom Rini 	int repeatable = 0;
322e192b24SSimon Glass 
332e192b24SSimon Glass 	if (argc == 1)
342e192b24SSimon Glass 		return CMD_RET_USAGE;
352e192b24SSimon Glass 
362e192b24SSimon Glass 	retval = cmd_process(0, argc - 1, argv + 1, &repeatable, &cycles);
372e192b24SSimon Glass 	report_time(cycles);
382e192b24SSimon Glass 
392e192b24SSimon Glass 	return retval;
402e192b24SSimon Glass }
412e192b24SSimon Glass 
422e192b24SSimon Glass U_BOOT_CMD(time, CONFIG_SYS_MAXARGS, 0, do_time,
432e192b24SSimon Glass 		"run commands and summarize execution time",
442e192b24SSimon Glass 		"command [args...]\n");
45