Move bin forking code from arena to bin module.
diff --git a/include/jemalloc/internal/bin.h b/include/jemalloc/internal/bin.h
index d792722..4e55166 100644
--- a/include/jemalloc/internal/bin.h
+++ b/include/jemalloc/internal/bin.h
@@ -80,5 +80,8 @@
/* Returns true on error. */
bool bin_init(bin_t *bin);
+void bin_prefork(tsdn_t *tsdn, bin_t *bin);
+void bin_postfork_parent(tsdn_t *tsdn, bin_t *bin);
+void bin_postfork_child(tsdn_t *tsdn, bin_t *bin);
#endif /* JEMALLOC_INTERNAL_BIN_H */
diff --git a/src/arena.c b/src/arena.c
index 0d27ffb..a5f2449 100644
--- a/src/arena.c
+++ b/src/arena.c
@@ -2126,7 +2126,7 @@
void
arena_prefork7(tsdn_t *tsdn, arena_t *arena) {
for (unsigned i = 0; i < NBINS; i++) {
- malloc_mutex_prefork(tsdn, &arena->bins[i].lock);
+ bin_prefork(tsdn, &arena->bins[i]);
}
}
@@ -2135,7 +2135,7 @@
unsigned i;
for (i = 0; i < NBINS; i++) {
- malloc_mutex_postfork_parent(tsdn, &arena->bins[i].lock);
+ bin_postfork_parent(tsdn, &arena->bins[i]);
}
malloc_mutex_postfork_parent(tsdn, &arena->large_mtx);
base_postfork_parent(tsdn, arena->base);
@@ -2179,7 +2179,7 @@
}
for (i = 0; i < NBINS; i++) {
- malloc_mutex_postfork_child(tsdn, &arena->bins[i].lock);
+ bin_postfork_child(tsdn, &arena->bins[i]);
}
malloc_mutex_postfork_child(tsdn, &arena->large_mtx);
base_postfork_child(tsdn, arena->base);
diff --git a/src/bin.c b/src/bin.c
index 89b041d..931a76e 100644
--- a/src/bin.c
+++ b/src/bin.c
@@ -21,7 +21,7 @@
bool
bin_init(bin_t *bin) {
- if (malloc_mutex_init(&bin->lock, "arena_bin", WITNESS_RANK_BIN,
+ if (malloc_mutex_init(&bin->lock, "bin", WITNESS_RANK_BIN,
malloc_mutex_rank_exclusive)) {
return true;
}
@@ -33,3 +33,18 @@
}
return false;
}
+
+void
+bin_prefork(tsdn_t *tsdn, bin_t *bin) {
+ malloc_mutex_prefork(tsdn, &bin->lock);
+}
+
+void
+bin_postfork_parent(tsdn_t *tsdn, bin_t *bin) {
+ malloc_mutex_postfork_parent(tsdn, &bin->lock);
+}
+
+void
+bin_postfork_child(tsdn_t *tsdn, bin_t *bin) {
+ malloc_mutex_postfork_child(tsdn, &bin->lock);
+}