X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/6760cb07d6b57be16928d95339d71e57c4e24f36..c4a5e2819f12960e97513f3adf4cd1a53b97d3fe:/teshsuite/xbt/parallel_log_crashtest.c diff --git a/teshsuite/xbt/parallel_log_crashtest.c b/teshsuite/xbt/parallel_log_crashtest.c index f606f437a1..f181bdf47e 100644 --- a/teshsuite/xbt/parallel_log_crashtest.c +++ b/teshsuite/xbt/parallel_log_crashtest.c @@ -6,8 +6,7 @@ /* 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. */ -#include "gras.h" -#include "xbt/synchro.h" +#include "xbt.h" XBT_LOG_NEW_DEFAULT_CATEGORY(synchro_crashtest, "Logs of this example"); @@ -18,77 +17,56 @@ int *id; /* to pass a pointer to the threads without race int more_info = 0; /* SET IT TO TRUE TO GET MORE INFO */ -/* - * Some additionnal code to let the father wait the childs - */ -xbt_mutex_t mut_end; -xbt_cond_t cond_end; -int running_threads; - -xbt_mutex_t dead_end; - /* Code ran by each thread */ -static void crasher_thread(void *arg) +static void* crasher_thread(void *arg) { int id = *(int *) arg; int i; for (i = 0; i < test_amount; i++) { if (more_info) - INFO10("%03d (%02d|%02d|%02d|%02d|%02d|%02d|%02d|%02d|%02d)", + XBT_INFO("%03d (%02d|%02d|%02d|%02d|%02d|%02d|%02d|%02d|%02d)", test_amount - i, id, id, id, id, id, id, id, id, id); else - INFO0("XXX (XX|XX|XX|XX|XX|XX|XX|XX|XX)"); + XBT_INFO("XXX (XX|XX|XX|XX|XX|XX|XX|XX|XX)"); } - - xbt_mutex_acquire(mut_end); - running_threads--; - xbt_cond_signal(cond_end); - xbt_mutex_release(mut_end); + return NULL; } int crasher(int argc, char *argv[]); int crasher(int argc, char *argv[]) { int i; - xbt_thread_t *crashers; + xbt_os_thread_t *crashers; - gras_init(&argc, argv); + xbt_init(&argc, argv); /* initializations of the philosopher mecanisms */ id = xbt_new0(int, crasher_amount); - crashers = xbt_new(xbt_thread_t, crasher_amount); + crashers = xbt_new(xbt_os_thread_t, crasher_amount); for (i = 0; i < crasher_amount; i++) id[i] = i; - /* setup the ending mecanism */ - running_threads = crasher_amount; - cond_end = xbt_cond_init(); - mut_end = xbt_mutex_init(); - /* spawn threads */ for (i = 0; i < crasher_amount; i++) { char *name = bprintf("thread %d", i); - crashers[i] = xbt_thread_create(name, &crasher_thread, &id[i],0/*not joinable*/); + crashers[i] = + xbt_os_thread_create(name, &crasher_thread, &id[i], NULL ); free(name); } /* wait for them */ - xbt_mutex_acquire(mut_end); - while (running_threads) - xbt_cond_wait(cond_end, mut_end); - xbt_mutex_release(mut_end); + for (i = 0; i < crasher_amount; i++) + xbt_os_thread_join(crashers[i],NULL); + + xbt_free(crashers); + xbt_free(id); - gras_exit(); return 0; } int main(int argc, char *argv[]) { - int errcode; - - errcode = crasher(argc, argv); - - return errcode; + return crasher(argc, argv); }