/* * Copyright (c) 2018 Nordic Semiconductor ASA * Copyright (c) 2016 Intel Corporation * * SPDX-License-Identifier: Apache-2.0 */ #include "kernel_shell.h" #include #define MINUTES_FACTOR (MSEC_PER_SEC * SEC_PER_MIN) #define HOURS_FACTOR (MINUTES_FACTOR * MIN_PER_HOUR) #define DAYS_FACTOR (HOURS_FACTOR * HOUR_PER_DAY) static int cmd_kernel_uptime(const struct shell *sh, size_t argc, char **argv) { int64_t milliseconds = k_uptime_get(); int64_t days; int64_t hours; int64_t minutes; int64_t seconds; if (argc == 1) { shell_print(sh, "Uptime: %llu ms", milliseconds); return 0; } /* No need to enable the getopt and getopt_long for just one option. */ if (strcmp("-p", argv[1]) && strcmp("--pretty", argv[1]) != 0) { shell_error(sh, "Unsupported option: %s", argv[1]); return -EIO; } days = milliseconds / DAYS_FACTOR; milliseconds %= DAYS_FACTOR; hours = milliseconds / HOURS_FACTOR; milliseconds %= HOURS_FACTOR; minutes = milliseconds / MINUTES_FACTOR; milliseconds %= MINUTES_FACTOR; seconds = milliseconds / MSEC_PER_SEC; milliseconds = milliseconds % MSEC_PER_SEC; shell_print(sh, "uptime: %llu days, %llu hours, %llu minutes, %llu seconds, %llu milliseconds", days, hours, minutes, seconds, milliseconds); return 0; } KERNEL_CMD_ARG_ADD(uptime, NULL, "Kernel uptime. Can be called with the -p or --pretty options", cmd_kernel_uptime, 1, 1);