Cache bin: expose ncached_max publicly.

This commit is contained in:
David Goldblatt 2020-05-11 14:19:37 -07:00 committed by David Goldblatt
parent 634afc4124
commit b58dea8d1b
2 changed files with 11 additions and 0 deletions

View File

@ -20,6 +20,16 @@
*/ */
typedef uint16_t cache_bin_sz_t; typedef uint16_t cache_bin_sz_t;
/*
* That implies the following value, for the maximum number of items in any
* individual bin. The cache bins track their bounds looking just at the low
* bits of a pointer, compared against a cache_bin_sz_t. So that's
* 1 << (sizeof(cache_bin_sz_t) * 8)
* bytes spread across pointer sized objects to get the maximum.
*/
#define CACHE_BIN_NCACHED_MAX (((size_t)1 << sizeof(cache_bin_sz_t) * 8) \
/ sizeof(void *) - 1)
/* /*
* This lives inside the cache_bin (for locality reasons), and is initialized * This lives inside the cache_bin (for locality reasons), and is initialized
* alongside it, but is otherwise not modified by any cache bin operations. * alongside it, but is otherwise not modified by any cache bin operations.

View File

@ -6,6 +6,7 @@
void void
cache_bin_info_init(cache_bin_info_t *info, cache_bin_info_init(cache_bin_info_t *info,
cache_bin_sz_t ncached_max) { cache_bin_sz_t ncached_max) {
assert(ncached_max <= CACHE_BIN_NCACHED_MAX);
size_t stack_size = (size_t)ncached_max * sizeof(void *); size_t stack_size = (size_t)ncached_max * sizeof(void *);
assert(stack_size < ((size_t)1 << (sizeof(cache_bin_sz_t) * 8))); assert(stack_size < ((size_t)1 << (sizeof(cache_bin_sz_t) * 8)));
info->ncached_max = (cache_bin_sz_t)ncached_max; info->ncached_max = (cache_bin_sz_t)ncached_max;