diff options
| author | Qi Wang <interwq@gwu.edu> | 2018-05-08 19:12:50 (GMT) |
|---|---|---|
| committer | Qi Wang <interwq@gwu.edu> | 2018-05-08 19:12:50 (GMT) |
| commit | 61efbda7098de6fe64c362d309824864308c36d4 (patch) | |
| tree | 62b8cec5495df891b28fbb139b0c01cdbf9f3fb3 /src/bin.c | |
| parent | 3f5049340e66c6929c3270f7359617f62e053b11 (diff) | |
| parent | 1c51381b7cc62b6e0e77d02c42925c3776dbc4a2 (diff) | |
| download | jemalloc-5.1.0.zip jemalloc-5.1.0.tar.gz jemalloc-5.1.0.tar.bz2 | |
Merge branch 'dev'5.1.0
Diffstat (limited to 'src/bin.c')
| -rw-r--r-- | src/bin.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/bin.c b/src/bin.c new file mode 100644 index 0000000..0886bc4 --- /dev/null +++ b/src/bin.c @@ -0,0 +1,50 @@ +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/jemalloc_internal_includes.h" + +#include "jemalloc/internal/bin.h" +#include "jemalloc/internal/witness.h" + +const bin_info_t bin_infos[NBINS] = { +#define BIN_INFO_bin_yes(reg_size, slab_size, nregs) \ + {reg_size, slab_size, nregs, BITMAP_INFO_INITIALIZER(nregs)}, +#define BIN_INFO_bin_no(reg_size, slab_size, nregs) +#define SC(index, lg_grp, lg_delta, ndelta, psz, bin, pgs, \ + lg_delta_lookup) \ + BIN_INFO_bin_##bin((1U<<lg_grp) + (ndelta<<lg_delta), \ + (pgs << LG_PAGE), (pgs << LG_PAGE) / ((1U<<lg_grp) + \ + (ndelta<<lg_delta))) + SIZE_CLASSES +#undef BIN_INFO_bin_yes +#undef BIN_INFO_bin_no +#undef SC +}; + +bool +bin_init(bin_t *bin) { + if (malloc_mutex_init(&bin->lock, "bin", WITNESS_RANK_BIN, + malloc_mutex_rank_exclusive)) { + return true; + } + bin->slabcur = NULL; + extent_heap_new(&bin->slabs_nonfull); + extent_list_init(&bin->slabs_full); + if (config_stats) { + memset(&bin->stats, 0, sizeof(bin_stats_t)); + } + 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); +} |
