aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJason Evans <jasone@FreeBSD.org>2017-06-15 07:15:05 +0000
committerJason Evans <jasone@FreeBSD.org>2017-06-15 07:15:05 +0000
commitb7eaed250fccfdef218a62bc2d0af529ad75341c (patch)
tree4f6475833f2b5c7bf36095e827e4b1d93a3994f1 /include
parentbd4862e5962dbd8880a4150e1455c39a70943bce (diff)
Notes
Diffstat (limited to 'include')
-rw-r--r--include/malloc_np.h54
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);