X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/9104957deccc59e0e804215d5db498fabfd40d29..6582744db5a014857b7a914815b147e88adead81:/src/xbt/mallocator.c diff --git a/src/xbt/mallocator.c b/src/xbt/mallocator.c index 8fff0ce255..d5a0a55156 100644 --- a/src/xbt/mallocator.c +++ b/src/xbt/mallocator.c @@ -1,6 +1,6 @@ /* mallocator - recycle objects to avoid malloc() / free() */ -/* Copyright (c) 2006-2020. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2006-2023. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -64,14 +64,15 @@ static inline void lock_release(xbt_mallocator_t m) } /** - * This function must be called once the framework configuration is done. If not, mallocators will never get used. - * Check the implementation notes in src/xbt/mallocator.c for the justification of this. + * This function must be called once the framework configuration is done. mallocators will not get used until it's + * called (check the implementation notes above for more info). * - * For example, surf_config uses this function to tell to the mallocators that the simgrid configuration is now - * finished and that it can create them if not done yet */ -void xbt_mallocator_initialization_is_done(int protect) + * sg_config uses this function to inform the mallocators when simgrid is configured, and whether lock protection is + * needed. + */ +void xbt_mallocator_initialization_is_done(int need_protection) { - initialization_done = protect ? 2 : 1; + initialization_done = need_protection ? 2 : 1; } /** used by the module to know if it's time to activate the mallocators yet */ @@ -125,11 +126,10 @@ xbt_mallocator_t xbt_mallocator_new(int size, pvoid_f_void_t new_f, void_f_pvoid */ void xbt_mallocator_free(xbt_mallocator_t m) { - int i; xbt_assert(m != NULL, "Invalid parameter"); XBT_VERB("Frees mallocator %p (size:%d/%d)", m, m->current_size, m->max_size); - for (i = 0; i < m->current_size; i++) { + for (int i = 0; i < m->current_size; i++) { m->free_f(m->objects[i]); } xbt_free(m->objects); @@ -159,9 +159,8 @@ void *xbt_mallocator_get(xbt_mallocator_t m) if (m->current_size <= 0) { /* No object is ready yet. Create a bunch of them to try to group the * mallocs on the same memory pages (to help the cache lines) */ - int i; int amount = MIN(m->max_size / 2, 1000); - for (i = 0; i < amount; i++) + for (int i = 0; i < amount; i++) m->objects[i] = m->new_f(); m->current_size = amount; }