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 9static 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 27static int do_time(struct cmd_tbl *cmdtp, int flag, int argc, 28 char *const argv[]) 29{ 30 ulong cycles = 0; 31 int retval = 0; 32 int repeatable = 0; 33 34 if (argc == 1) 35 return CMD_RET_USAGE; 36 37 retval = cmd_process(0, argc - 1, argv + 1, &repeatable, &cycles); 38 report_time(cycles); 39 40 return retval; 41} 42 43U_BOOT_CMD(time, CONFIG_SYS_MAXARGS, 0, do_time, 44 "run commands and summarize execution time", 45 "command [args...]\n"); 46