libxx.hxx 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. //***************************************************************************
  2. // libs/libxx/libxx.hxx
  3. //
  4. // Copyright (C) 2012-2013 Gregory Nutt. All rights reserved.
  5. // Author: Gregory Nutt <gnutt@nuttx.org>
  6. //
  7. // Redistribution and use in source and binary forms, with or without
  8. // modification, are permitted provided that the following conditions
  9. // are met:
  10. //
  11. // 1. Redistributions of source code must retain the above copyright
  12. // notice, this list of conditions and the following disclaimer.
  13. // 2. Redistributions in binary form must reproduce the above copyright
  14. // notice, this list of conditions and the following disclaimer in
  15. // the documentation and/or other materials provided with the
  16. // distribution.
  17. // 3. Neither the name NuttX nor the names of its contributors may be
  18. // used to endorse or promote products derived from this software
  19. // without specific prior written permission.
  20. //
  21. // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  22. // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  23. // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
  24. // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
  25. // COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
  26. // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
  27. // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
  28. // OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
  29. // AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  30. // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
  31. // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  32. // POSSIBILITY OF SUCH DAMAGE.
  33. //
  34. //***************************************************************************
  35. #ifndef __LIBXX_LIBXX_HXX
  36. #define __LIBXX_LIBXX_HXX 1
  37. //***************************************************************************
  38. // Included Files
  39. //***************************************************************************
  40. #include <nuttx/config.h>
  41. //***************************************************************************
  42. // Definitions
  43. //***************************************************************************
  44. // The NuttX C library an be build in two modes: (1) as a standard, C-libary
  45. // that can be used by normal, user-space applications, or (2) as a special,
  46. // kernel-mode C-library only used within the OS. If NuttX is not being
  47. // built as separated kernel- and user-space modules, then only the first
  48. // mode is supported.
  49. #if (defined(CONFIG_BUILD_PROTECTED) && defined(__KERNEL__)) || \
  50. defined(CONFIG_BUILD_KERNEL)
  51. # include <nuttx/kmalloc.h>
  52. # define lib_malloc(s) kmm_malloc(s)
  53. # define lib_zalloc(s) kmm_zalloc(s)
  54. # define lib_realloc(p,s) kmm_realloc(p,s)
  55. # define lib_free(p) kmm_free(p)
  56. #else
  57. # include <cstdlib>
  58. # define lib_malloc(s) malloc(s)
  59. # define lib_zalloc(s) zalloc(s)
  60. # define lib_realloc(p,s) realloc(p,s)
  61. # define lib_free(p) free(p)
  62. #endif
  63. //***************************************************************************
  64. // Public Types
  65. //***************************************************************************/
  66. typedef CODE void (*__cxa_exitfunc_t)(void *arg);
  67. //***************************************************************************
  68. // Public Data
  69. //***************************************************************************
  70. extern "C" FAR void *__dso_handle;
  71. //***************************************************************************
  72. // Public Function Prototypes
  73. //***************************************************************************
  74. extern "C" int __cxa_atexit(__cxa_exitfunc_t func, void *arg, void *dso_handle);
  75. #endif // __LIBXX_LIBXX_HXX