X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/89d98a56977c70b61c8dba09f5c5136e73784339..648f354f59e3ae712e973c2268b1c69395b6fdf2:/examples/msg/mc/bugged1_liveness.c diff --git a/examples/msg/mc/bugged1_liveness.c b/examples/msg/mc/bugged1_liveness.c index b020037ea5..09d374613f 100644 --- a/examples/msg/mc/bugged1_liveness.c +++ b/examples/msg/mc/bugged1_liveness.c @@ -1,3 +1,9 @@ +/* Copyright (c) 2012-2014. 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. */ + /***************** Centralized Mutual Exclusion Algorithm *********************/ /* This example implements a centralized mutual exclusion algorithm. */ /* Bug : CS requests of client 1 not satisfied */ @@ -29,12 +35,13 @@ int coordinator(int argc, char *argv[]) int CS_used = 0; msg_task_t task = NULL, answer = NULL; xbt_dynar_t requests = xbt_dynar_new(sizeof(char *), NULL); + char *req; while(1){ MSG_task_receive(&task, "coordinator"); const char *kind = MSG_task_get_name(task); if (!strcmp(kind, "request")) { - char *req = MSG_task_get_data(task); + req = MSG_task_get_data(task); if (CS_used) { XBT_INFO("CS already used. Queue the request."); xbt_dynar_push(requests, &req); @@ -50,8 +57,7 @@ int coordinator(int argc, char *argv[]) } else { if (!xbt_dynar_is_empty(requests)) { XBT_INFO("CS release. Grant to queued requests (queue size: %lu)", xbt_dynar_length(requests)); - char *req; - xbt_dynar_pop(requests, &req); + xbt_dynar_shift(requests, &req); if(strcmp(req, "1") != 0){ MSG_task_send(MSG_task_create("grant", 0, 1000, NULL), req); }else{ @@ -66,6 +72,7 @@ int coordinator(int argc, char *argv[]) MSG_task_destroy(task); task = NULL; kind = NULL; + req = NULL; } return 0;