summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid T. Goldblatt <davidtgoldblatt@gmail.com>2017-10-02 01:10:36 (GMT)
committerDavid Goldblatt <davidtgoldblatt@gmail.com>2017-12-19 00:29:10 (GMT)
commit48bb4a056be97214fa049f21bead9618429c807a (patch)
tree64bec84b5452cda0ccd7873b6e5c85cd7b1f0cbd
parenta8dd8876fb483f402833fa05f0fb46fe7c5416e1 (diff)
downloadjemalloc-48bb4a056be97214fa049f21bead9618429c807a.zip
jemalloc-48bb4a056be97214fa049f21bead9618429c807a.tar.gz
jemalloc-48bb4a056be97214fa049f21bead9618429c807a.tar.bz2
Move bin forking code from arena to bin module.
-rw-r--r--include/jemalloc/internal/bin.h3
-rw-r--r--src/arena.c6
-rw-r--r--src/bin.c17
3 files changed, 22 insertions, 4 deletions
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 @@ struct bin_s {
/* 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 @@ arena_prefork6(tsdn_t *tsdn, arena_t *arena) {
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 @@ arena_postfork_parent(tsdn_t *tsdn, arena_t *arena) {
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 @@ arena_postfork_child(tsdn_t *tsdn, arena_t *arena) {
}
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 @@ const bin_info_t bin_infos[NBINS] = {
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 @@ bin_init(bin_t *bin) {
}
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);
+}