Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add new entry in Release_Notes.
[simgrid.git] / src / xbt / mallocator.c
index e32dd76..944e2a1 100644 (file)
@@ -1,6 +1,6 @@
 /* mallocator - recycle objects to avoid malloc() / free()                  */
 
-/* Copyright (c) 2006-2019. 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;
     }