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 2023/01/25 12:31:46 UTC

[nuttx] 03/03: libc: Move on_exit and __cxa_atexit in lib_atexit.c

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/nuttx.git

commit c05cdd6598b1d9c948b7dc6c809acddc44d5331f
Author: Xiang Xiao <xi...@xiaomi.com>
AuthorDate: Sat Jan 21 00:11:33 2023 +0800

    libc: Move on_exit and __cxa_atexit in lib_atexit.c
    
    Signed-off-by: Xiang Xiao <xi...@xiaomi.com>
---
 libs/libc/stdlib/Make.defs        |  4 +--
 libs/libc/stdlib/lib_atexit.c     | 62 +++++++++++++++++++++++++++++++++++
 libs/libc/stdlib/lib_cxa_atexit.c | 56 --------------------------------
 libs/libc/stdlib/lib_onexit.c     | 68 ---------------------------------------
 4 files changed, 63 insertions(+), 127 deletions(-)

diff --git a/libs/libc/stdlib/Make.defs b/libs/libc/stdlib/Make.defs
index b150568112..2484d9e05a 100644
--- a/libs/libc/stdlib/Make.defs
+++ b/libs/libc/stdlib/Make.defs
@@ -27,9 +27,7 @@ CSRCS += lib_rand.c lib_rand48.c lib_qsort.c lib_srand.c lib_strtol.c
 CSRCS += lib_strtoll.c lib_strtoul.c lib_strtoull.c lib_strtold.c 
 CSRCS += lib_checkbase.c lib_mktemp.c lib_mkstemp.c lib_mkdtemp.c
 CSRCS += lib_aligned_alloc.c lib_posix_memalign.c lib_valloc.c lib_mblen.c
-CSRCS += lib_mbtowc.c lib_wctomb.c lib_mbstowcs.c lib_wcstombs.c
-CSRCS += lib_atexit.c lib_cxa_atexit.c lib_onexit.c
-
+CSRCS += lib_mbtowc.c lib_wctomb.c lib_mbstowcs.c lib_wcstombs.c lib_atexit.c
 
 ifeq ($(CONFIG_PSEUDOTERM),y)
 CSRCS += lib_ptsname.c lib_ptsnamer.c lib_unlockpt.c lib_openpty.c
diff --git a/libs/libc/stdlib/lib_atexit.c b/libs/libc/stdlib/lib_atexit.c
index eab0894667..b2cfceaed2 100644
--- a/libs/libc/stdlib/lib_atexit.c
+++ b/libs/libc/stdlib/lib_atexit.c
@@ -206,3 +206,65 @@ int at_quick_exit(CODE void (*func)(void))
 {
   return atexit_register(ATTYPE_ATQUICKEXIT, func, NULL, NULL);
 }
+
+/****************************************************************************
+ * Name: on_exit
+ *
+ * Description:
+ *    Registers a function to be called at program exit.
+ *    The on_exit() function registers the given function to be called
+ *    at normal process termination, whether via exit or via return from
+ *    the program's main(). The function is passed the status argument
+ *    given to the last call to exit and the arg argument from on_exit().
+ *
+ *    NOTE 1: This function comes from SunOS 4, but is also present in
+ *    libc4, libc5 and glibc. It no longer occurs in Solaris (SunOS 5).
+ *    Avoid this function, and use the standard atexit() instead.
+ *
+ *    Limitations in the current implementation:
+ *
+ *      1. Only a single on_exit function can be registered unless
+ *         CONFIG_LIBC_MAX_EXITFUNS defines a larger number.
+ *      2. on_exit functions are not inherited when a new task is
+ *         created.
+ *
+ * Input Parameters:
+ *   func - A pointer to the function to be called when the task exits.
+ *   arg -  An argument that will be provided to the on_exit() function when
+ *          the task exits.
+ *
+ * Returned Value:
+ *   Zero on success. Non-zero on failure.
+ *
+ ****************************************************************************/
+
+int on_exit(CODE void (*func)(int, FAR void *), FAR void *arg)
+{
+  return atexit_register(ATTYPE_ONEXIT, (CODE void (*)(void))func, arg,
+                         NULL);
+}
+
+/****************************************************************************
+ * Name: __cxa_atexit
+ *
+ * Description:
+ *   __cxa_atexit() registers a destructor function to be called by exit().
+ *   On a call to exit(), the registered functions should be called with
+ *   the single argument 'arg'. Destructor functions shall always be
+ *   called in the reverse order to their registration (i.e. the most
+ *   recently registered function shall be called first),
+ *
+ *   If shared libraries were supported, the callbacks should be invoked
+ *   when the shared library is unloaded as well.
+ *
+ * Reference:
+ *   Linux base
+ *
+ ****************************************************************************/
+
+int __cxa_atexit(CODE void (*func)(FAR void *), FAR void *arg,
+                 FAR void *dso_handle)
+{
+  return atexit_register(ATTYPE_CXA, (CODE void (*)(void))func, arg,
+                         dso_handle);
+}
diff --git a/libs/libc/stdlib/lib_cxa_atexit.c b/libs/libc/stdlib/lib_cxa_atexit.c
deleted file mode 100644
index 3e68eedfb5..0000000000
--- a/libs/libc/stdlib/lib_cxa_atexit.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/****************************************************************************
- * libs/libc/stdlib/lib_cxa_atexit.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 <nuttx/config.h>
-
-#include <nuttx/atexit.h>
-
-/****************************************************************************
- * Public Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Name: __cxa_atexit
- *
- * Description:
- *   __cxa_atexit() registers a destructor function to be called by exit().
- *   On a call to exit(), the registered functions should be called with
- *   the single argument 'arg'. Destructor functions shall always be
- *   called in the reverse order to their registration (i.e. the most
- *   recently registered function shall be called first),
- *
- *   If shared libraries were supported, the callbacks should be invoked
- *   when the shared library is unloaded as well.
- *
- * Reference:
- *   Linux base
- *
- ****************************************************************************/
-
-int __cxa_atexit(CODE void (*func)(FAR void *), FAR void *arg,
-                 FAR void *dso_handle)
-{
-  return atexit_register(ATTYPE_CXA, (CODE void (*)(void))func, arg,
-                         dso_handle);
-}
diff --git a/libs/libc/stdlib/lib_onexit.c b/libs/libc/stdlib/lib_onexit.c
deleted file mode 100644
index f3a34d9827..0000000000
--- a/libs/libc/stdlib/lib_onexit.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/****************************************************************************
- * libs/libc/stdlib/lib_onexit.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 <nuttx/config.h>
-
-#include <nuttx/atexit.h>
-
-/****************************************************************************
- * Public Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Name: on_exit
- *
- * Description:
- *    Registers a function to be called at program exit.
- *    The on_exit() function registers the given function to be called
- *    at normal process termination, whether via exit or via return from
- *    the program's main(). The function is passed the status argument
- *    given to the last call to exit and the arg argument from on_exit().
- *
- *    NOTE 1: This function comes from SunOS 4, but is also present in
- *    libc4, libc5 and glibc. It no longer occurs in Solaris (SunOS 5).
- *    Avoid this function, and use the standard atexit() instead.
- *
- *    Limitations in the current implementation:
- *
- *      1. Only a single on_exit function can be registered unless
- *         CONFIG_LIBC_MAX_EXITFUNS defines a larger number.
- *      2. on_exit functions are not inherited when a new task is
- *         created.
- *
- * Input Parameters:
- *   func - A pointer to the function to be called when the task exits.
- *   arg -  An argument that will be provided to the on_exit() function when
- *          the task exits.
- *
- * Returned Value:
- *   Zero on success. Non-zero on failure.
- *
- ****************************************************************************/
-
-int on_exit(CODE void (*func)(int, FAR void *), FAR void *arg)
-{
-  return atexit_register(ATTYPE_ONEXIT, (CODE void (*)(void))func, arg,
-                         NULL);
-}