uboot/cmd/time.c
<<
>>
Prefs
   1/*
   2 * Copyright (c) 2011 The Chromium OS Authors.
   3 * SPDX-License-Identifier:     GPL-2.0+
   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(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
  42U_BOOT_CMD(time, CONFIG_SYS_MAXARGS, 0, do_time,
  43                "run commands and summarize execution time",
  44                "command [args...]\n");
  45