malloc_decls.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /* This Source Code Form is subject to the terms of the Mozilla Public
  2. * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  3. * You can obtain one at http://mozilla.org/MPL/2.0/. */
  4. /*
  5. * Helper header to declare all the supported malloc functions.
  6. * MALLOC_DECL arguments are:
  7. * - function name
  8. * - return type
  9. * - argument types
  10. */
  11. #ifndef malloc_decls_h
  12. # define malloc_decls_h
  13. # include "jemalloc_types.h"
  14. #ifndef MALLOC_USABLE_SIZE_CONST_PTR
  15. #define MALLOC_USABLE_SIZE_CONST_PTR const
  16. #endif
  17. typedef MALLOC_USABLE_SIZE_CONST_PTR void * usable_ptr_t;
  18. # define MALLOC_FUNCS_MALLOC 1
  19. # define MALLOC_FUNCS_JEMALLOC 2
  20. # define MALLOC_FUNCS_INIT 4
  21. # define MALLOC_FUNCS_BRIDGE 8
  22. # define MALLOC_FUNCS_ALL (MALLOC_FUNCS_INIT | MALLOC_FUNCS_BRIDGE | \
  23. MALLOC_FUNCS_MALLOC | MALLOC_FUNCS_JEMALLOC)
  24. #endif /* malloc_decls_h */
  25. #ifndef MALLOC_FUNCS
  26. # define MALLOC_FUNCS (MALLOC_FUNCS_MALLOC | MALLOC_FUNCS_JEMALLOC)
  27. #endif
  28. #ifdef MALLOC_DECL
  29. # ifndef MALLOC_DECL_VOID
  30. # define MALLOC_DECL_VOID(func, ...) MALLOC_DECL(func, void, __VA_ARGS__)
  31. # endif
  32. # if MALLOC_FUNCS & MALLOC_FUNCS_INIT
  33. MALLOC_DECL(init, void, const malloc_table_t *)
  34. # endif
  35. # if MALLOC_FUNCS & MALLOC_FUNCS_BRIDGE
  36. MALLOC_DECL(get_bridge, struct ReplaceMallocBridge*, void)
  37. # endif
  38. # if MALLOC_FUNCS & MALLOC_FUNCS_MALLOC
  39. MALLOC_DECL(malloc, void *, size_t)
  40. MALLOC_DECL(posix_memalign, int, void **, size_t, size_t)
  41. MALLOC_DECL(aligned_alloc, void *, size_t, size_t)
  42. MALLOC_DECL(calloc, void *, size_t, size_t)
  43. MALLOC_DECL(realloc, void *, void *, size_t)
  44. MALLOC_DECL_VOID(free, void *)
  45. MALLOC_DECL(memalign, void *, size_t, size_t)
  46. MALLOC_DECL(valloc, void *, size_t)
  47. MALLOC_DECL(malloc_usable_size, size_t, usable_ptr_t)
  48. MALLOC_DECL(malloc_good_size, size_t, size_t)
  49. # endif
  50. # if MALLOC_FUNCS & MALLOC_FUNCS_JEMALLOC
  51. MALLOC_DECL_VOID(jemalloc_stats, jemalloc_stats_t *)
  52. MALLOC_DECL_VOID(jemalloc_purge_freed_pages, void)
  53. MALLOC_DECL_VOID(jemalloc_free_dirty_pages, void)
  54. # endif
  55. # undef MALLOC_DECL_VOID
  56. #endif /* MALLOC_DECL */
  57. #undef MALLOC_DECL
  58. #undef MALLOC_FUNCS