1 // SPDX-License-Identifier: GPL-2.0+ 2 /* 3 * Copyright (c) 2011 The Chromium OS Authors. 4 */ 5 6 #include <common.h> 7 #include <command.h> 8 9 static void report_time(ulong cycles) 10 { 11 ulong minutes, seconds, milliseconds; 12 ulong total_seconds, remainder; 13 14 total_seconds = cycles / CONFIG_SYS_HZ; 15 remainder = cycles % CONFIG_SYS_HZ; 16 minutes = total_seconds / 60; 17 seconds = total_seconds % 60; 18 /* approximate millisecond value */ 19 milliseconds = (remainder * 1000 + CONFIG_SYS_HZ / 2) / CONFIG_SYS_HZ; 20 21 printf("\ntime:"); 22 if (minutes) 23 printf(" %lu minutes,", minutes); 24 printf(" %lu.%03lu seconds\n", seconds, milliseconds); 25 } 26 27 static int do_time(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) 28 { 29 ulong cycles = 0; 30 int retval = 0; 31 int repeatable = 0; 32 33 if (argc == 1) 34 return CMD_RET_USAGE; 35 36 retval = cmd_process(0, argc - 1, argv + 1, &repeatable, &cycles); 37 report_time(cycles); 38 39 return retval; 40 } 41 42 U_BOOT_CMD(time, CONFIG_SYS_MAXARGS, 0, do_time, 43 "run commands and summarize execution time", 44 "command [args...]\n"); 45