You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by pk...@apache.org on 2022/09/21 14:37:39 UTC
[incubator-nuttx-apps] branch master updated (ac4b42fee -> 45ef7f948)
This is an automated email from the ASF dual-hosted git repository.
pkarashchenko pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx-apps.git
from ac4b42fee testing:support openbsd crypto test for nuttx
new 06f39d10f apps/nshlib: add uptime command support
new 45ef7f948 apps/nshlib: fix CI error
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
nshlib/Kconfig | 4 ++
nshlib/nsh.h | 4 ++
nshlib/nsh_command.c | 4 ++
nshlib/nsh_proccmds.c | 124 +++++++++++++++++++++++++++++++++++++++++++++++++-
4 files changed, 135 insertions(+), 1 deletion(-)
[incubator-nuttx-apps] 02/02: apps/nshlib: fix CI error
Posted by pk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
pkarashchenko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx-apps.git
commit 45ef7f948fa66a975fc33e9270f2ebc9855b1aeb
Author: Junbo Zheng <zh...@xiaomi.com>
AuthorDate: Mon Sep 19 19:29:57 2022 +0800
apps/nshlib: fix CI error
Error: /home/runner/work/incubator-nuttx-apps/incubator-nuttx-apps/apps/nshlib/nsh_proccmds.c:574:40: error: Operator/assignment must be preceded with whitespace
Error: Process completed with exit code 1.
Signed-off-by: Junbo Zheng <zh...@xiaomi.com>
---
nshlib/nsh_proccmds.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/nshlib/nsh_proccmds.c b/nshlib/nsh_proccmds.c
index ef413ed98..8a303e29c 100644
--- a/nshlib/nsh_proccmds.c
+++ b/nshlib/nsh_proccmds.c
@@ -571,7 +571,7 @@ int cmd_exec(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv)
return ERROR;
}
- nsh_output(vtbl, "Calling %p\n", (void*)addr);
+ nsh_output(vtbl, "Calling %p\n", (void *)addr);
return ((exec_t)addr)();
}
#endif
[incubator-nuttx-apps] 01/02: apps/nshlib: add uptime command support
Posted by pk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
pkarashchenko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx-apps.git
commit 06f39d10f15c7e68b3bd1c528bb7bb89fe5a8bd0
Author: Junbo Zheng <zh...@xiaomi.com>
AuthorDate: Mon Sep 12 15:43:36 2022 +0800
apps/nshlib: add uptime command support
run uptime command on sim:
nsh>
nsh>
nsh> uptime
19:35:01 up 1:40, load average: 0.00, 0.00, 0.00
nsh>
nsh>
nsh> uptime -s
2022-09-16 17:54:26
nsh>
nsh>
nsh> uptime -p
up 1 hour, 40 minutes
nsh>
nsh>
nsh> uptime -h
Usage:
uptime [options]
Options:
-p, show uptime in pretty format
-h, display this help and exit
-s, system up since
nsh>
nsh>
nsh> uptime -abc
uptime: invalid option -- -abc
Usage:
uptime [options]
Options:
-p, show uptime in pretty format
-h, display this help and exit
-s, system up since
nsh>
nsh>
nsh> date
Fri, Sep 16 19:35:18 2022
nsh>
nsh>
Signed-off-by: Junbo Zheng <zh...@xiaomi.com>
---
nshlib/Kconfig | 4 ++
nshlib/nsh.h | 4 ++
nshlib/nsh_command.c | 4 ++
nshlib/nsh_proccmds.c | 122 ++++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 134 insertions(+)
diff --git a/nshlib/Kconfig b/nshlib/Kconfig
index 263ab5132..24e508e16 100644
--- a/nshlib/Kconfig
+++ b/nshlib/Kconfig
@@ -518,6 +518,10 @@ config NSH_DISABLE_UNSET
bool "Disable unset"
default DEFAULT_SMALL
+config NSH_DISABLE_UPTIME
+ bool "Disable uptime"
+ default DEFAULT_SMALL
+
config NSH_DISABLE_URLDECODE
bool "Disable urldecode"
default DEFAULT_SMALL
diff --git a/nshlib/nsh.h b/nshlib/nsh.h
index 2bf66591b..1b98d0b0c 100644
--- a/nshlib/nsh.h
+++ b/nshlib/nsh.h
@@ -1204,6 +1204,10 @@ int cmd_pmconfig(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv);
int cmd_usleep(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv);
#endif
+#ifndef CONFIG_NSH_DISABLE_UPTIME
+ int cmd_uptime(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv);
+#endif
+
#if defined(CONFIG_NETUTILS_CODECS) && defined(CONFIG_CODECS_BASE64)
# ifndef CONFIG_NSH_DISABLE_BASE64DEC
int cmd_base64decode(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv);
diff --git a/nshlib/nsh_command.c b/nshlib/nsh_command.c
index d577e21b1..5e53ea6f4 100644
--- a/nshlib/nsh_command.c
+++ b/nshlib/nsh_command.c
@@ -564,6 +564,10 @@ static const struct cmdmap_s g_cmdmap[] =
{ "unset", cmd_unset, 2, 2, "<name>" },
#endif
+#ifndef CONFIG_NSH_DISABLE_UPTIME
+ { "uptime", cmd_uptime, 1, 2, "[-sph]" },
+#endif
+
#if defined(CONFIG_NETUTILS_CODECS) && defined(CONFIG_CODECS_URLCODE)
# ifndef CONFIG_NSH_DISABLE_URLDECODE
{ "urldecode", cmd_urldecode, 2, 3, "[-f] <string or filepath>" },
diff --git a/nshlib/nsh_proccmds.c b/nshlib/nsh_proccmds.c
index 099f40d3c..ef413ed98 100644
--- a/nshlib/nsh_proccmds.c
+++ b/nshlib/nsh_proccmds.c
@@ -33,6 +33,8 @@
#include <dirent.h>
#include <errno.h>
#include <signal.h>
+#include <sys/sysinfo.h>
+#include <time.h>
#include "nsh.h"
#include "nsh_console.h"
@@ -45,6 +47,15 @@
# define CONFIG_NSH_PROC_MOUNTPOINT "/proc"
#endif
+#ifndef CONFIG_NSH_DISABLE_UPTIME
+ #ifndef FSHIFT
+ # define FSHIFT SI_LOAD_SHIFT
+ #endif
+# define FIXED_1 (1 << FSHIFT) /* 1.0 as fixed-point */
+# define LOAD_INT(x) ((x) >> FSHIFT)
+# define LOAD_FRAC(x) (LOAD_INT(((x) & (FIXED_1 - 1)) * 100))
+#endif
+
/****************************************************************************
* Private Types
****************************************************************************/
@@ -758,3 +769,114 @@ int cmd_usleep(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
return OK;
}
#endif
+
+/****************************************************************************
+ * Name: cmd_uptime
+ ****************************************************************************/
+
+#ifndef CONFIG_NSH_DISABLE_UPTIME
+int cmd_uptime(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv)
+{
+ uint32_t updays;
+ uint32_t uphours;
+ uint32_t upminutes;
+
+ time_t current_time_seconds;
+ FAR struct tm *current_time;
+
+ struct sysinfo sys_info;
+
+ time_t uptime = 0;
+
+ bool pretty_format_opt = false;
+ bool system_load_opt = false;
+
+ if (argc < 2)
+ {
+ system_load_opt = true;
+
+ current_time_seconds = time(NULL);
+ current_time = localtime(¤t_time_seconds);
+ nsh_output(vtbl, "%02u:%02u:%02u ", current_time->tm_hour,
+ current_time->tm_min, current_time->tm_sec);
+ }
+ else if (strcmp(argv[1], "-p") == 0)
+ {
+ pretty_format_opt = true;
+ }
+ else if (strcmp(argv[1], "-s") == 0)
+ {
+ sysinfo(&sys_info);
+ time(¤t_time_seconds);
+ current_time_seconds -= sys_info.uptime;
+ current_time = localtime(¤t_time_seconds);
+ nsh_output(vtbl, "%04u-%02u-%02u %02u:%02u:%02u\n",
+ current_time->tm_year + 1900, current_time->tm_mon + 1,
+ current_time->tm_mday, current_time->tm_hour,
+ current_time->tm_min, current_time->tm_sec);
+ return OK;
+ }
+ else
+ {
+ if (strcmp(argv[1], "-h") != 0)
+ {
+ nsh_output(vtbl, "uptime: invalid option -- %s\n", argv[1]);
+ }
+
+ nsh_output(vtbl, "Usage:\n");
+ nsh_output(vtbl, "uptime [options]\n");
+
+ nsh_output(vtbl, "Options:\n");
+ nsh_output(vtbl, "-p, show uptime in pretty format\n");
+ nsh_output(vtbl, "-h, display this help and exit\n");
+ nsh_output(vtbl, "-s, system up since\n");
+
+ return ERROR;
+ }
+
+ sysinfo(&sys_info);
+ uptime = sys_info.uptime;
+
+ updays = uptime / 86400;
+ uptime -= updays * 86400;
+ uphours = uptime / 3600;
+ uptime -= uphours * 3600;
+ upminutes = uptime / 60;
+
+ nsh_output(vtbl, "up ");
+
+ if (updays)
+ {
+ nsh_output(vtbl, "%" PRIu32 " day%s, ", updays,
+ (updays > 1) ? "s" : "");
+ }
+
+ if (pretty_format_opt)
+ {
+ if (uphours)
+ {
+ nsh_output(vtbl, "%" PRIu32 " hour%s, ", uphours,
+ (uphours > 1) ? "s" : "");
+ }
+
+ nsh_output(vtbl, "%" PRIu32 " minute%s", upminutes,
+ (upminutes > 1) ? "s" : "");
+ }
+ else
+ {
+ nsh_output(vtbl, "%2" PRIu32 ":" "%02" PRIu32, uphours, upminutes);
+ }
+
+ if (system_load_opt)
+ {
+ nsh_output(vtbl, ", load average: %lu.%02lu, %lu.%02lu, %lu.%02lu",
+ LOAD_INT(sys_info.loads[0]), LOAD_FRAC(sys_info.loads[0]),
+ LOAD_INT(sys_info.loads[1]), LOAD_FRAC(sys_info.loads[1]),
+ LOAD_INT(sys_info.loads[2]), LOAD_FRAC(sys_info.loads[2]));
+ }
+
+ nsh_output(vtbl, "\n");
+
+ return OK;
+}
+#endif