Skip to content

Commit f130960

Browse files
committed
feat(pools): Use default params when NULL is passed
1 parent b02c3c5 commit f130960

File tree

5 files changed

+31
-28
lines changed

5 files changed

+31
-28
lines changed

include/umf/memory_pool.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ typedef uint32_t umf_pool_create_flags_t;
4747
/// @brief Creates new memory pool.
4848
/// @param ops instance of umf_memory_pool_ops_t
4949
/// @param provider memory provider that will be used for coarse-grain allocations.
50-
/// @param params pointer to pool-specific parameters
50+
/// @param params pointer to pool-specific parameters, or NULL for defaults
5151
/// @param flags a combination of umf_pool_create_flag_t
5252
/// @param hPool [out] handle to the newly created memory pool
5353
/// @return UMF_RESULT_SUCCESS on success or appropriate error code on failure.

include/umf/memory_pool_ops.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ typedef struct umf_memory_pool_ops_t {
3737
/// @param providers array of memory providers that will be used for coarse-grain allocations.
3838
/// Should contain at least one memory provider.
3939
/// @param numProvider number of elements in the providers array
40-
/// @param params pool-specific params
40+
/// @param params pool-specific params, or NULL for defaults
4141
/// @param pool [out] returns pointer to the pool
4242
/// @return UMF_RESULT_SUCCESS on success or appropriate error code on failure.
4343
///

src/pool/pool_disjoint.c

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -644,20 +644,29 @@ static void free_slab(void *unused, void *slab) {
644644
}
645645
}
646646

647+
static const umf_disjoint_pool_params_t default_params = {
648+
.slab_min_size = 64 * 1024, // 64KB default
649+
.max_poolable_size = 2 * 1024 * 1024, // 2MB default
650+
.capacity = 4, // default
651+
.min_bucket_size = 8, // default
652+
.cur_pool_size = 0,
653+
.pool_trace = 0,
654+
.shared_limits = NULL,
655+
.name = "disjoint"};
656+
647657
umf_result_t disjoint_pool_initialize(umf_memory_provider_handle_t provider,
648658
const void *params, void **ppPool) {
649-
// TODO set defaults when user pass the NULL as params
650-
if (!provider || !params || !ppPool) {
659+
if (!provider || !ppPool) {
651660
return UMF_RESULT_ERROR_INVALID_ARGUMENT;
652661
}
653662

654-
const umf_disjoint_pool_params_t *dp_params = params;
663+
const umf_disjoint_pool_params_t *dp_params;
655664

656-
// min_bucket_size parameter must be a power of 2 for bucket sizes
657-
// to generate correctly.
658-
if (!dp_params->min_bucket_size ||
659-
!IS_POWER_OF_2(dp_params->min_bucket_size)) {
660-
return UMF_RESULT_ERROR_INVALID_ARGUMENT;
665+
// If params is NULL, use default values
666+
if (!params) {
667+
dp_params = &default_params;
668+
} else {
669+
dp_params = params;
661670
}
662671

663672
disjoint_pool_t *disjoint_pool =
@@ -1102,18 +1111,7 @@ umfDisjointPoolParamsCreate(umf_disjoint_pool_params_handle_t *hParams) {
11021111
return UMF_RESULT_ERROR_OUT_OF_HOST_MEMORY;
11031112
}
11041113

1105-
*params = (umf_disjoint_pool_params_t){
1106-
.slab_min_size = 64 * 1024, // 64K
1107-
.max_poolable_size = 2 * 1024 * 1024, // 2MB
1108-
.capacity = 4,
1109-
.min_bucket_size = UMF_DISJOINT_POOL_MIN_BUCKET_DEFAULT_SIZE,
1110-
.cur_pool_size = 0,
1111-
.pool_trace = 0,
1112-
.shared_limits = NULL,
1113-
};
1114-
1115-
strncpy(params->name, DEFAULT_NAME, sizeof(params->name) - 1);
1116-
params->name[sizeof(params->name) - 1] = '\0';
1114+
*params = default_params;
11171115

11181116
*hParams = params;
11191117
return UMF_RESULT_SUCCESS;

src/pool/pool_jemalloc.c

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -431,15 +431,19 @@ static umf_result_t op_initialize(umf_memory_provider_handle_t provider,
431431

432432
extent_hooks_t *pHooks = &arena_extent_hooks;
433433
size_t unsigned_size = sizeof(unsigned);
434-
int n_arenas_set_from_params = 0;
435434
int err;
436-
const umf_jemalloc_pool_params_t *jemalloc_params = params;
435+
const umf_jemalloc_pool_params_t *jemalloc_params;
437436

438-
size_t n_arenas = 0;
439-
if (jemalloc_params) {
440-
n_arenas = jemalloc_params->n_arenas;
441-
n_arenas_set_from_params = 1;
437+
// If params is NULL, use default values
438+
umf_jemalloc_pool_params_t default_params = {}; // Will be calculated later
439+
440+
if (!params) {
441+
jemalloc_params = &default_params;
442+
} else {
443+
jemalloc_params = params;
442444
}
445+
size_t n_arenas = jemalloc_params->n_arenas;
446+
int n_arenas_set_from_params = (params != NULL);
443447

444448
if (n_arenas == 0) {
445449
n_arenas = utils_get_num_cores() * 4;

src/pool/pool_scalable.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,7 @@ static umf_result_t tbb_pool_initialize(umf_memory_provider_handle_t provider,
275275
.keep_all_memory = false,
276276
.reserved = 0};
277277

278+
// If params is provided, override defaults
278279
if (params) {
279280
const umf_scalable_pool_params_t *scalable_params = params;
280281
policy.granularity = scalable_params->granularity;

0 commit comments

Comments
 (0)