You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by ar...@apache.org on 2022/09/22 00:29:32 UTC

[incubator-nuttx] 02/02: arch.h: Make _sinit/_einit as an offical interface

This is an automated email from the ASF dual-hosted git repository.

archer pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git

commit 4c44c6f70914471cffa4267c5c67755a37c70fd3
Author: Xiang Xiao <xi...@xiaomi.com>
AuthorDate: Wed Sep 21 06:12:43 2022 +0800

    arch.h: Make _sinit/_einit as an offical interface
    
    Signed-off-by: Xiang Xiao <xi...@xiaomi.com>
---
 include/nuttx/arch.h                | 10 ++++++++++
 libs/libc/misc/lib_cxx_initialize.c | 15 ---------------
 2 files changed, 10 insertions(+), 15 deletions(-)

diff --git a/include/nuttx/arch.h b/include/nuttx/arch.h
index 467942e4ea..339b891383 100644
--- a/include/nuttx/arch.h
+++ b/include/nuttx/arch.h
@@ -96,6 +96,7 @@
 
 typedef CODE void (*sig_deliver_t)(FAR struct tcb_s *tcb);
 typedef CODE void (*phy_enable_t)(bool enable);
+typedef CODE void (*initializer_t)(void);
 
 /****************************************************************************
  * Public Data
@@ -149,6 +150,15 @@ EXTERN volatile bool g_rtc_enabled;
 
 #endif
 
+#ifdef CONFIG_HAVE_CXXINITIALIZE
+/* _sinit and _einit are symbols exported by the linker script that mark the
+ * beginning and the end of the C++ initialization section.
+ */
+
+extern initializer_t _sinit;
+extern initializer_t _einit;
+#endif
+
 /****************************************************************************
  * Public Function Prototypes
  ****************************************************************************/
diff --git a/libs/libc/misc/lib_cxx_initialize.c b/libs/libc/misc/lib_cxx_initialize.c
index fc4016e214..71f8af9ab2 100644
--- a/libs/libc/misc/lib_cxx_initialize.c
+++ b/libs/libc/misc/lib_cxx_initialize.c
@@ -31,25 +31,10 @@
 
 #include "libc.h"
 
-/****************************************************************************
- * Private Types
- ****************************************************************************/
-
-/* This type defines one entry in initialization array */
-
-typedef CODE void (*initializer_t)(void);
-
 /****************************************************************************
  * External References
  ****************************************************************************/
 
-/* _sinit and _einit are symbols exported by the linker script that mark the
- * beginning and the end of the C++ initialization section.
- */
-
-extern initializer_t _sinit;
-extern initializer_t _einit;
-
 #if defined(CONFIG_ARCH_SIM) && defined(CONFIG_HOST_MACOS)
 extern void macho_call_saved_init_funcs(void);
 #endif