diff --git a/libs/libc/stdlib/Make.defs b/libs/libc/stdlib/Make.defs index b150568112c..2484d9e05a7 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 eab08946678..b2cfceaed2f 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 3e68eedfb58..00000000000 --- 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 - -#include - -/**************************************************************************** - * 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 f3a34d9827b..00000000000 --- 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 - -#include - -/**************************************************************************** - * 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); -}