diff options
| author | Jason Evans <jasone@FreeBSD.org> | 2017-06-15 07:15:05 +0000 |
|---|---|---|
| committer | Jason Evans <jasone@FreeBSD.org> | 2017-06-15 07:15:05 +0000 |
| commit | b7eaed250fccfdef218a62bc2d0af529ad75341c (patch) | |
| tree | 4f6475833f2b5c7bf36095e827e4b1d93a3994f1 /include | |
| parent | bd4862e5962dbd8880a4150e1455c39a70943bce (diff) | |
Notes
Diffstat (limited to 'include')
| -rw-r--r-- | include/malloc_np.h | 54 |
1 files changed, 35 insertions, 19 deletions
diff --git a/include/malloc_np.h b/include/malloc_np.h index 88919a4486664..fbbf4ff078866 100644 --- a/include/malloc_np.h +++ b/include/malloc_np.h @@ -37,39 +37,55 @@ #include <strings.h> __BEGIN_DECLS -typedef void *(chunk_alloc_t)(void *, size_t, size_t, bool *, bool *, unsigned); -typedef bool (chunk_dalloc_t)(void *, size_t, bool, unsigned); -typedef bool (chunk_commit_t)(void *, size_t, size_t, size_t, unsigned); -typedef bool (chunk_decommit_t)(void *, size_t, size_t, size_t, unsigned); -typedef bool (chunk_purge_t)(void *, size_t, size_t, size_t, unsigned); -typedef bool (chunk_split_t)(void *, size_t, size_t, size_t, bool, unsigned); -typedef bool (chunk_merge_t)(void *, size_t, void *, size_t, bool, unsigned); -typedef struct { - chunk_alloc_t *alloc; - chunk_dalloc_t *dalloc; - chunk_commit_t *commit; - chunk_decommit_t *decommit; - chunk_purge_t *purge; - chunk_split_t *split; - chunk_merge_t *merge; -} chunk_hooks_t; +typedef struct extent_hooks_s extent_hooks_t; +typedef void *(extent_alloc_t)(extent_hooks_t *, void *, size_t, size_t, bool *, + bool *, unsigned); +typedef bool (extent_dalloc_t)(extent_hooks_t *, void *, size_t, bool, + unsigned); +typedef void (extent_destroy_t)(extent_hooks_t *, void *, size_t, bool, + unsigned); +typedef bool (extent_commit_t)(extent_hooks_t *, void *, size_t, size_t, size_t, + unsigned); +typedef bool (extent_decommit_t)(extent_hooks_t *, void *, size_t, size_t, + size_t, unsigned); +typedef bool (extent_purge_t)(extent_hooks_t *, void *, size_t, size_t, size_t, + unsigned); +typedef bool (extent_split_t)(extent_hooks_t *, void *, size_t, size_t, size_t, + bool, unsigned); +typedef bool (extent_merge_t)(extent_hooks_t *, void *, size_t, void *, size_t, + bool, unsigned); +struct extent_hooks_s { + extent_alloc_t *alloc; + extent_dalloc_t *dalloc; + extent_destroy_t *destroy; + extent_commit_t *commit; + extent_decommit_t *decommit; + extent_purge_t *purge_lazy; + extent_purge_t *purge_forced; + extent_split_t *split; + extent_merge_t *merge; +}; size_t malloc_usable_size(const void *ptr); void malloc_stats_print(void (*write_cb)(void *, const char *), void *cbopaque, const char *opts); + +#define MALLCTL_ARENAS_ALL 4096 +#define MALLCTL_ARENAS_DESTROYED 4097 + int mallctl(const char *name, void *oldp, size_t *oldlenp, void *newp, size_t newlen); int mallctlnametomib(const char *name, size_t *mibp, size_t *miblenp); int mallctlbymib(const size_t *mib, size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen); -#define MALLOCX_LG_ALIGN(la) (la) -#define MALLOCX_ALIGN(a) (ffsl(a)-1) +#define MALLOCX_LG_ALIGN(la) ((int)(la)) +#define MALLOCX_ALIGN(a) ((int)(ffsl((int)(a))-1)) #define MALLOCX_ZERO ((int)0x40) #define MALLOCX_TCACHE(tc) ((int)(((tc)+2) << 8)) #define MALLOCX_TCACHE_NONE MALLOCX_TCACHE(-1) -#define MALLOCX_ARENA(a) ((int)(((a)+1) << 20)) +#define MALLOCX_ARENA(a) ((((int)(a))+1) << 20) void *mallocx(size_t size, int flags); void *rallocx(void *ptr, size_t size, int flags); |
