Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'hypervisor' of git+ssh://scm.gforge.inria.fr//gitroot/simgrid/simgrid...
[simgrid.git] / include / smpi / smpi_cocci.h
index 2aff10b..534c443 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2011. The SimGrid Team.
+/* Copyright (c) 2011-2013. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
@@ -47,21 +47,16 @@ void __attribute__((weak,destructor)) __postfini_##name(void) { \
  *
  * This function is rather internal, mainly used for the
  * privatization of global variables through coccinelle.
- *
- * Since its implementation relies on the on_exit() function that
- * is not implemented on Mac, this function is a no-op on that
- * architecture. But the only issue raised is that the memory is
- * not raised right before the process terminaison. This is only
- * important if you want to run valgrind on the code, or
- * equivalent.
  */
-XBT_PUBLIC(void) smpi_register_static(void* arg);
+XBT_PUBLIC(void) smpi_register_static(void* arg, void_f_pvoid_t free_fn);
+
+XBT_PUBLIC(void) smpi_free_static(void);
 
 #define SMPI_VARINIT_STATIC(name,type)                      \
 static type *name = NULL;                                   \
 if(!name) {                                                 \
    name = (type*)malloc(smpi_global_size() * sizeof(type)); \
-   smpi_register_static(name);                              \
+   smpi_register_static(name, xbt_free);                    \
 }
 
 #define SMPI_VARINIT_STATIC_AND_SET(name,type,expr) \
@@ -74,7 +69,7 @@ if(!name) {                                         \
    for(i = 0; i < size; i++) {                      \
       name[i] = value;                              \
    }                                                \
-   smpi_register_static(name);                      \
+   smpi_register_static(name, xbt_free);            \
 }
 
 #define SMPI_VARGET_STATIC(name) name[smpi_process_index()]