Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
last change of Tesh2
[simgrid.git] / tools / tesh2 / src / units.c
index 1988eff..b590f22 100644 (file)
@@ -64,6 +64,7 @@ units_run_all(units_t units, xbt_os_mutex_t mutex)
 \r
        xbt_dynar_foreach(units->items, i, unit)\r
        {\r
+               xbt_os_sem_acquire(jobs_sem);\r
                unit_run(unit, mutex);\r
        }\r
 \r
@@ -107,6 +108,15 @@ units_interrupt_all(units_t units)
        {\r
                if(!(unit->successeded) && !(unit->interrupted))\r
                        unit_interrupt(unit);\r
+               else\r
+               {\r
+                       if(!unit->released && unit->sem)\r
+                       {\r
+                               unit->released = 1;\r
+                               xbt_os_sem_release(unit->sem);\r
+                       }\r
+               }\r
+                       \r
        }\r
        \r
        return 0;\r
@@ -157,8 +167,9 @@ units_free(void** unitsptr)
 {\r
        if(!(*unitsptr))\r
                return EINVAL;\r
-\r
-       xbt_dynar_free(&((*((units_t*)unitsptr))->items));\r
+       \r
+       if((*((units_t*)unitsptr))->items)\r
+               xbt_dynar_free(&((*((units_t*)unitsptr))->items));\r
                \r
        free(*unitsptr);\r
        *unitsptr = NULL;\r