mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
Make the malloc(3) family of functions weak and make their non-weak
implementations visible for use by applications. The functions $F that are now weak symbols are: allocm, calloc, dallocm, free, malloc, malloc_usable_size, nallocm, posix_memalign, rallocm, realloc, sallocm The non-weak implementations of $F are exported as __$F. Submitted by: stevek@juniper.net Reviewed by: jasone@, kib@ Approved by: jasone@ (jemalloc) Obtained from: juniper Networks, Inc
This commit is contained in:
parent
e814330de1
commit
9dfba391d6
3 changed files with 64 additions and 0 deletions
|
|
@ -68,9 +68,50 @@ extern int __isthreaded;
|
|||
#define isthreaded ((bool)__isthreaded)
|
||||
|
||||
/* Mangle. */
|
||||
#undef je_malloc
|
||||
#undef je_calloc
|
||||
#undef je_realloc
|
||||
#undef je_free
|
||||
#undef je_posix_memalign
|
||||
#undef je_malloc_usable_size
|
||||
#undef je_allocm
|
||||
#undef je_rallocm
|
||||
#undef je_sallocm
|
||||
#undef je_dallocm
|
||||
#undef je_nallocm
|
||||
#define je_malloc __malloc
|
||||
#define je_calloc __calloc
|
||||
#define je_realloc __realloc
|
||||
#define je_free __free
|
||||
#define je_posix_memalign __posix_memalign
|
||||
#define je_malloc_usable_size __malloc_usable_size
|
||||
#define je_allocm __allocm
|
||||
#define je_rallocm __rallocm
|
||||
#define je_sallocm __sallocm
|
||||
#define je_dallocm __dallocm
|
||||
#define je_nallocm __nallocm
|
||||
#define open _open
|
||||
#define read _read
|
||||
#define write _write
|
||||
#define close _close
|
||||
#define pthread_mutex_lock _pthread_mutex_lock
|
||||
#define pthread_mutex_unlock _pthread_mutex_unlock
|
||||
|
||||
#ifdef JEMALLOC_C_
|
||||
/*
|
||||
* Define 'weak' symbols so that an application can have its own versions
|
||||
* of malloc, calloc, realloc, free, et al.
|
||||
*/
|
||||
__weak_reference(__malloc, malloc);
|
||||
__weak_reference(__calloc, calloc);
|
||||
__weak_reference(__realloc, realloc);
|
||||
__weak_reference(__free, free);
|
||||
__weak_reference(__posix_memalign, posix_memalign);
|
||||
__weak_reference(__malloc_usable_size, malloc_usable_size);
|
||||
__weak_reference(__allocm, allocm);
|
||||
__weak_reference(__rallocm, rallocm);
|
||||
__weak_reference(__sallocm, sallocm);
|
||||
__weak_reference(__dallocm, dallocm);
|
||||
__weak_reference(__nallocm, nallocm);
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -61,6 +61,18 @@ int rallocm(void **ptr, size_t *rsize, size_t size, size_t extra,
|
|||
int sallocm(const void *ptr, size_t *rsize, int flags) __nonnull(1);
|
||||
int dallocm(void *ptr, int flags) __nonnull(1);
|
||||
int nallocm(size_t *rsize, size_t size, int flags);
|
||||
|
||||
void * __calloc(size_t, size_t) __malloc_like;
|
||||
void * __malloc(size_t) __malloc_like;
|
||||
void * __realloc(void *, size_t);
|
||||
void __free(void *);
|
||||
int __posix_memalign(void **, size_t, size_t);
|
||||
size_t __malloc_usable_size(const void *);
|
||||
int __allocm(void **, size_t *, size_t, int) __nonnull(1);
|
||||
int __rallocm(void **, size_t *, size_t, size_t, int) __nonnull(1);
|
||||
int __sallocm(const void *, size_t *, int) __nonnull(1);
|
||||
int __dallocm(void *, int) __nonnull(1);
|
||||
int __nallocm(size_t *, size_t, int);
|
||||
__END_DECLS
|
||||
|
||||
#endif /* _MALLOC_NP_H_ */
|
||||
|
|
|
|||
|
|
@ -26,6 +26,17 @@ FBSD_1.3 {
|
|||
sallocm;
|
||||
dallocm;
|
||||
nallocm;
|
||||
__malloc;
|
||||
__calloc;
|
||||
__realloc;
|
||||
__free;
|
||||
__posix_memalign;
|
||||
__malloc_usable_size;
|
||||
__allocm;
|
||||
__rallocm;
|
||||
__sallocm;
|
||||
__dallocm;
|
||||
__nallocm;
|
||||
};
|
||||
|
||||
FBSDprivate_1.0 {
|
||||
|
|
|
|||
Loading…
Reference in a new issue