+++ /dev/null
-#include <units.h>\r
-#include <unit.h>\r
-#include <fstreams.h>\r
-\r XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(tesh);
-\r\runits_t \r units_new(runner_t runner, fstreams_t fstreams) \r
-{
- \rfstream_t fstream;
- \runsigned int i;
- \runit_t unit;
- \r\runits_t units = xbt_new0(s_units_t, 1);
- \r\runits->items =
- xbt_dynar_new(sizeof(unit_t), (void_f_pvoid_t) unit_free);
- \r\rxbt_dynar_foreach(fstreams->items, i, fstream) \r {
- \runit = unit_new(runner, NULL, NULL, fstream);
- \rxbt_dynar_push(units->items, &unit);
- \r}
- \r\rreturn units;
-\r}
-
-\r\r\rint \r units_is_empty(units_t units) \r
-{
- \rif (!units)
- \r {
- \rerrno = EINVAL;
- \rreturn 0;
- \r}
- \r\rreturn (0 == xbt_dynar_length(units->items));
-\r}
-
-\r\rint \r units_get_size(units_t units) \r
-{
- \rif (!units)
- \r {
- \rerrno = EINVAL;
- \rreturn -1;
- \r}
- \r\rreturn xbt_dynar_length(units->items);
-\r}
-
-\r\r\rint \r units_run_all(units_t units, xbt_os_mutex_t mutex) \r
-{
- \runit_t unit;
- \runsigned int i;
- \r\rif (!units)
- \rreturn EINVAL;
- \r\rif (!xbt_dynar_length(units->items))
- \rreturn EAGAIN;
- \r\rxbt_dynar_foreach(units->items, i, unit) \r {
- \rxbt_os_sem_acquire(jobs_sem);
- \runit_run(unit, mutex);
- \r}
- \r\rreturn 0;
-\r}
-
-\r\rint \r units_join_all(units_t units) \r
-{
- \runit_t unit;
- \runsigned int i;
- \r\rif (!units)
- \rreturn EINVAL;
- \r\rif (!xbt_dynar_length(units->items))
- \rreturn EAGAIN;
- \r\rxbt_dynar_foreach(units->items, i, unit) \r {
- \rif (unit->thread)
- \rxbt_os_thread_join(unit->thread, NULL);
- \r}
- \r\rreturn 0;
-\r}
-
-\r\rint \r units_interrupt_all(units_t units) \r
-{
- \runit_t unit;
- \runsigned int i;
- \r\rif (!units)
- \rreturn EINVAL;
- \r\rif (!xbt_dynar_length(units->items))
- \rreturn EAGAIN;
- \r\rxbt_dynar_foreach(units->items, i, unit) \r {
- \rif (!(unit->successeded) && !(unit->interrupted))
- \runit_interrupt(unit);
- \r
- else
- \r {
- \rif (!unit->released && unit->sem)
- \r {
- \runit->released = 1;
- \rxbt_os_sem_release(unit->sem);
- \r}
- \r}
- \r\r}
- \r\rreturn 0;
-\r}
-
-\r\rint \r units_summuarize(units_t units) \r
-{
- \runit_t unit;
- \runsigned int i;
- \r\rif (!units)
- \rreturn EINVAL;
- \r\rif (!xbt_dynar_length(units->items))
- \rreturn EAGAIN;
- \r\rxbt_dynar_foreach(units->items, i, unit) \r {
- \runit_summuarize(unit);
- \r}
- \r\rreturn 0;
-\r\r}
-
-\r\rint \r units_reset_all(units_t units) \r
-{
- \runit_t unit;
- \runsigned int i;
- \r\rif (!units)
- \rreturn EINVAL;
- \r\rif (!xbt_dynar_length(units->items))
- \rreturn EAGAIN;
- \r\rxbt_dynar_foreach(units->items, i, unit) \r {
- \runit_reset(unit);
- \r}
- \rreturn 0;
-\r}
-
-\r\rint \r units_free(void **unitsptr) \r
-{
- \rif (!(*unitsptr))
- \rreturn EINVAL;
- \r\rif ((*((units_t *) unitsptr))->items)
- \rxbt_dynar_free(&((*((units_t *) unitsptr))->items));
- \r\rfree(*unitsptr);
- \r*unitsptr = NULL;
- \r\rreturn 0;
-\r}
-
-\r\r