summaryrefslogtreecommitdiffstats
path: root/include/jemalloc
diff options
context:
space:
mode:
authorJason Evans <jasone@canonware.com>2015-02-19 00:40:53 (GMT)
committerJason Evans <jasone@canonware.com>2015-02-19 00:40:53 (GMT)
commit99bd94fb65a0b6423c4efcc3e3e501179b92a4db (patch)
tree65cbc1117cf1f6e45a1e1d26ab71b9ec26e6f518 /include/jemalloc
parent738e089a2e707dbfc70286f7deeebc68e03d2347 (diff)
downloadjemalloc-99bd94fb65a0b6423c4efcc3e3e501179b92a4db.zip
jemalloc-99bd94fb65a0b6423c4efcc3e3e501179b92a4db.tar.gz
jemalloc-99bd94fb65a0b6423c4efcc3e3e501179b92a4db.tar.bz2
Fix chunk cache races.
These regressions were introduced by ee41ad409a43d12900a5a3108f6c14f84e4eb0eb (Integrate whole chunks into unused dirty page purging machinery.).
Diffstat (limited to 'include/jemalloc')
-rw-r--r--include/jemalloc/internal/arena.h1
-rw-r--r--include/jemalloc/internal/chunk.h13
-rw-r--r--include/jemalloc/internal/private_symbols.txt8
3 files changed, 16 insertions, 6 deletions
diff --git a/include/jemalloc/internal/arena.h b/include/jemalloc/internal/arena.h
index 3d79c62..42086ca 100644
--- a/include/jemalloc/internal/arena.h
+++ b/include/jemalloc/internal/arena.h
@@ -399,6 +399,7 @@ void arena_chunk_ralloc_huge_shrink(arena_t *arena, void *chunk,
size_t oldsize, size_t usize);
bool arena_chunk_ralloc_huge_expand(arena_t *arena, void *chunk,
size_t oldsize, size_t usize, bool *zero);
+void arena_maybe_purge(arena_t *arena);
void arena_purge_all(arena_t *arena);
void arena_tcache_fill_small(arena_t *arena, tcache_bin_t *tbin,
index_t binind, uint64_t prof_accumbytes);
diff --git a/include/jemalloc/internal/chunk.h b/include/jemalloc/internal/chunk.h
index bf6acbd..1a968a5 100644
--- a/include/jemalloc/internal/chunk.h
+++ b/include/jemalloc/internal/chunk.h
@@ -39,16 +39,21 @@ extern size_t chunk_npages;
bool chunk_register(const void *chunk, const extent_node_t *node);
void chunk_deregister(const void *chunk, const extent_node_t *node);
void *chunk_alloc_base(size_t size);
-void *chunk_alloc_arena(chunk_alloc_t *chunk_alloc,
- chunk_dalloc_t *chunk_dalloc, unsigned arena_ind, void *new_addr,
- size_t size, size_t alignment, bool *zero);
+void *chunk_alloc_cache(arena_t *arena, void *new_addr, size_t size,
+ size_t alignment, bool *zero, bool dalloc_node);
void *chunk_alloc_default(void *new_addr, size_t size, size_t alignment,
bool *zero, unsigned arena_ind);
+void *chunk_alloc_wrapper(arena_t *arena, chunk_alloc_t *chunk_alloc,
+ void *new_addr, size_t size, size_t alignment, bool *zero);
void chunk_record(arena_t *arena, extent_tree_t *chunks_szad,
extent_tree_t *chunks_ad, bool cache, void *chunk, size_t size,
bool zeroed);
+void chunk_dalloc_cache(arena_t *arena, void *chunk, size_t size);
+void chunk_dalloc_arena(arena_t *arena, void *chunk, size_t size,
+ bool zeroed);
bool chunk_dalloc_default(void *chunk, size_t size, unsigned arena_ind);
-void chunk_unmap(arena_t *arena, void *chunk, size_t size, bool zeroed);
+void chunk_dalloc_wrapper(arena_t *arena, chunk_dalloc_t *chunk_dalloc,
+ void *chunk, size_t size);
bool chunk_boot(void);
void chunk_prefork(void);
void chunk_postfork_parent(void);
diff --git a/include/jemalloc/internal/private_symbols.txt b/include/jemalloc/internal/private_symbols.txt
index dfe62ce..7c217c7 100644
--- a/include/jemalloc/internal/private_symbols.txt
+++ b/include/jemalloc/internal/private_symbols.txt
@@ -53,6 +53,7 @@ arena_mapbitsp_read
arena_mapbitsp_write
arena_maxclass
arena_maxrun
+arena_maybe_purge
arena_metadata_allocated_add
arena_metadata_allocated_get
arena_metadata_allocated_sub
@@ -124,14 +125,18 @@ bootstrap_free
bootstrap_malloc
bt_init
buferror
-chunk_alloc_arena
+chunk_alloc_cache
chunk_alloc_base
chunk_alloc_default
chunk_alloc_dss
chunk_alloc_mmap
+chunk_alloc_wrapper
chunk_boot
+chunk_dalloc_arena
+chunk_dalloc_cache
chunk_dalloc_default
chunk_dalloc_mmap
+chunk_dalloc_wrapper
chunk_deregister
chunk_dss_boot
chunk_dss_postfork_child
@@ -147,7 +152,6 @@ chunk_postfork_parent
chunk_prefork
chunk_record
chunk_register
-chunk_unmap
chunks_rtree
chunksize
chunksize_mask