summaryrefslogtreecommitdiff
path: root/include/jemalloc/internal/base_structs.h
diff options
context:
space:
mode:
authorDavid Goldblatt <davidgoldblatt@fb.com>2017-01-10 18:06:31 -0800
committerDavid Goldblatt <davidtgoldblatt@gmail.com>2017-01-12 15:43:51 -0800
commit77cccac8cde9fb1f1555331814c4e6440c16de43 (patch)
treea8a9c7c88474b892a6d511c3c13073f2c35cdfca /include/jemalloc/internal/base_structs.h
parent94c5d22a4da7844d0bdc5b370e47b1ba14268af2 (diff)
Break up headers into constituent parts
This is part of a broader change to make header files better represent the dependencies between one another (see https://github.com/jemalloc/jemalloc/issues/533). It breaks up component headers into smaller parts that can be made to have a simpler dependency graph. For the autogenerated headers (smoothstep.h and size_classes.h), no splitting was necessary, so I didn't add support to emit multiple headers.
Diffstat (limited to 'include/jemalloc/internal/base_structs.h')
-rw-r--r--include/jemalloc/internal/base_structs.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/include/jemalloc/internal/base_structs.h b/include/jemalloc/internal/base_structs.h
new file mode 100644
index 00000000..bad37c06
--- /dev/null
+++ b/include/jemalloc/internal/base_structs.h
@@ -0,0 +1,44 @@
+#ifndef JEMALLOC_INTERNAL_BASE_STRUCTS_H
+#define JEMALLOC_INTERNAL_BASE_STRUCTS_H
+
+/* Embedded at the beginning of every block of base-managed virtual memory. */
+struct base_block_s {
+ /* Total size of block's virtual memory mapping. */
+ size_t size;
+
+ /* Next block in list of base's blocks. */
+ base_block_t *next;
+
+ /* Tracks unused trailing space. */
+ extent_t extent;
+};
+
+struct base_s {
+ /* Associated arena's index within the arenas array. */
+ unsigned ind;
+
+ /* User-configurable extent hook functions. */
+ union {
+ extent_hooks_t *extent_hooks;
+ void *extent_hooks_pun;
+ };
+
+ /* Protects base_alloc() and base_stats_get() operations. */
+ malloc_mutex_t mtx;
+
+ /* Serial number generation state. */
+ size_t extent_sn_next;
+
+ /* Chain of all blocks associated with base. */
+ base_block_t *blocks;
+
+ /* Heap of extents that track unused trailing space within blocks. */
+ extent_heap_t avail[NSIZES];
+
+ /* Stats, only maintained if config_stats. */
+ size_t allocated;
+ size_t resident;
+ size_t mapped;
+};
+
+#endif /* JEMALLOC_INTERNAL_BASE_STRUCTS_H */