This is an automated email from the ASF dual-hosted git repository.
xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new c1ddfcfa83 nuttx/arch:support to obtain host cpuinfo in NSH.
c1ddfcfa83 is described below
commit c1ddfcfa839d9e75428f45e79e5c564122322e08
Author: cuiziwei <[email protected]>
AuthorDate: Thu Jun 15 19:51:28 2023 +0800
nuttx/arch:support to obtain host cpuinfo in NSH.
---
arch/Kconfig | 1 +
arch/sim/src/Makefile | 22 +++++++-------
arch/sim/src/sim/CMakeLists.txt | 13 ++++-----
arch/sim/src/sim/sim_cpuinfo.c | 65 +++++++++++++++++++++++++++++++++++++++++
4 files changed, 82 insertions(+), 19 deletions(-)
diff --git a/arch/Kconfig b/arch/Kconfig
index 673ff57771..e479f69c23 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -118,6 +118,7 @@ config ARCH_SIM
select SERIAL_CONSOLE
select SERIAL_IFLOWCONTROL
select SCHED_HPWORK
+ select ARCH_HAVE_CPUINFO
---help---
Linux/Cygwin user-mode simulation.
diff --git a/arch/sim/src/Makefile b/arch/sim/src/Makefile
index 7d5915b64e..b0864ea26b 100644
--- a/arch/sim/src/Makefile
+++ b/arch/sim/src/Makefile
@@ -63,7 +63,7 @@ AOBJS = $(ASRCS:.S=$(OBJEXT))
CSRCS = sim_initialize.c sim_idle.c sim_doirq.c sim_initialstate.c
CSRCS += sim_createstack.c sim_usestack.c sim_releasestack.c sim_stackframe.c
CSRCS += sim_exit.c sim_schedulesigaction.c sim_switchcontext.c sim_heap.c
-CSRCS += sim_uart.c sim_copyfullstate.c sim_sigdeliver.c sim_tcbinfo.c
+CSRCS += sim_uart.c sim_copyfullstate.c sim_sigdeliver.c sim_tcbinfo.c
sim_cpuinfo.c
CSRCS += sim_registerdump.c sim_saveusercontext.c sim_textheap.c
ifeq ($(CONFIG_SCHED_BACKTRACE),y)
@@ -97,7 +97,15 @@ ifeq ($(CONFIG_FS_LARGEFILE),y)
HOSTCFLAGS += -D_FILE_OFFSET_BITS=64
endif
-HOSTSRCS = sim_hostirq.c sim_hostmemory.c sim_hostmisc.c sim_hosttime.c
sim_hostuart.c
+HOSTSRCS = sim_hostirq.c sim_hostmemory.c sim_hostmisc.c sim_hosttime.c
sim_hostuart.c
+HOSTSRCS += sim_hostfs.c
+
+hostfs.h: $(TOPDIR)/include/nuttx/fs/hostfs.h
+ @echo "CP: $<"
+ $(Q) cp $< $@
+
+sim_hostfs.c: hostfs.h
+
STDLIBS += -lpthread
ifeq ($(CONFIG_HOST_MACOS),y)
ifeq ($(CONFIG_HAVE_CXXINITIALIZE),y)
@@ -237,16 +245,6 @@ ifeq ($(CONFIG_SIM_CAMERA_V4L2),y)
STDLIBS += -lv4l2
endif
-ifeq ($(CONFIG_SIM_HOSTFS),y)
- HOSTSRCS += sim_hostfs.c
-
-hostfs.h: $(TOPDIR)/include/nuttx/fs/hostfs.h
- @echo "CP: $<"
- $(Q) cp $< $@
-
-sim_hostfs.c: hostfs.h
-endif
-
COBJS = $(CSRCS:.c=$(OBJEXT))
NUTTXOBJS = $(AOBJS) $(COBJS)
diff --git a/arch/sim/src/sim/CMakeLists.txt b/arch/sim/src/sim/CMakeLists.txt
index 670fde3404..21ab50b6a8 100644
--- a/arch/sim/src/sim/CMakeLists.txt
+++ b/arch/sim/src/sim/CMakeLists.txt
@@ -40,6 +40,7 @@ list(
SRCS
sim_initialize.c
sim_idle.c
+ sim_cpuinfo.c
sim_doirq.c
sim_initialstate.c
sim_createstack.c
@@ -222,14 +223,12 @@ if(CONFIG_SIM_USB_HOST)
endif()
endif()
-if(CONFIG_SIM_HOSTFS)
- list(APPEND HOSTSRCS sim_hostfs.c)
- list(APPEND HOST_DEFINITIONS CONFIG_NAME_MAX=${CONFIG_NAME_MAX})
+list(APPEND HOSTSRCS sim_hostfs.c)
+list(APPEND HOST_DEFINITIONS CONFIG_NAME_MAX=${CONFIG_NAME_MAX})
- configure_file(${NUTTX_DIR}/include/nuttx/fs/hostfs.h
- ${CMAKE_CURRENT_BINARY_DIR}/hostfs.h COPYONLY)
- target_include_directories(nuttx PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
-endif()
+configure_file(${NUTTX_DIR}/include/nuttx/fs/hostfs.h
+ ${CMAKE_CURRENT_BINARY_DIR}/hostfs.h COPYONLY)
+target_include_directories(nuttx PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
target_include_directories(nuttx PRIVATE ${CMAKE_BINARY_DIR}/include/nuttx)
target_include_directories(nuttx PRIVATE ${CMAKE_CURRENT_LIST_DIR})
diff --git a/arch/sim/src/sim/sim_cpuinfo.c b/arch/sim/src/sim/sim_cpuinfo.c
new file mode 100644
index 0000000000..44b6d436ac
--- /dev/null
+++ b/arch/sim/src/sim/sim_cpuinfo.c
@@ -0,0 +1,65 @@
+/****************************************************************************
+ * arch/sim/src/sim/sim_cpuinfo.c
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership. The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <errno.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+#include <nuttx/fs/hostfs.h>
+
+#if defined(CONFIG_FS_PROCFS) && !defined(CONFIG_FS_PROCFS_EXCLUDE_CPUINFO)
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: up_show_cpuinfo
+ ****************************************************************************/
+
+ssize_t up_show_cpuinfo(char *buf, size_t buf_size, off_t file_off)
+{
+ int fd;
+ off_t ret;
+
+ fd = host_open("/proc/cpuinfo", O_RDONLY, 0644);
+ if (fd < 0)
+ {
+ return fd;
+ }
+
+ ret = host_lseek(fd, file_off, SEEK_SET);
+ if (ret < 0)
+ {
+ host_close(fd);
+ return ret;
+ }
+
+ file_off = host_read(fd, buf, buf_size);
+
+ host_close(fd);
+
+ return file_off;
+}
+#endif /* CONFIG_FS_PROCFS && !CONFIG_FS_PROCFS_EXCLUDE_CPUINFO */