uboot/cmd/time.c
<<
>>
Prefs
   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