X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/cc01c6a871dbbfd0cc84e26eb9f94aeb539e613e..5e3d0bb6a421978c079cd454fb9d79709748efb6:/examples/msg/mc/centralized_mutex.c diff --git a/examples/msg/mc/centralized_mutex.c b/examples/msg/mc/centralized_mutex.c index 7b68acee9c..3403c88286 100644 --- a/examples/msg/mc/centralized_mutex.c +++ b/examples/msg/mc/centralized_mutex.c @@ -1,3 +1,10 @@ +/* Copyright (c) 2010-2012. 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. */ /* There is no bug on it, it is just provided to test the state space */ @@ -19,37 +26,37 @@ int coordinator(int argc, char *argv[]) int CS_used = 0; // initially the CS is idle int todo = AMOUNT_OF_CLIENTS * CS_PER_PROCESS; // amount of releases we are expecting while (todo > 0) { - m_task_t task = NULL; + msg_task_t task = NULL; MSG_task_receive(&task, "coordinator"); const char *kind = MSG_task_get_name(task); //is it a request or a release? if (!strcmp(kind, "request")) { // that's a request char *req = MSG_task_get_data(task); if (CS_used) { // need to push the request in the vector - INFO0("CS already used. Queue the request"); + XBT_INFO("CS already used. Queue the request"); xbt_dynar_push(requests, &req); } else { // can serve it immediatly - INFO0("CS idle. Grant immediatly"); - m_task_t answer = MSG_task_create("grant", 0, 1000, NULL); + XBT_INFO("CS idle. Grant immediatly"); + msg_task_t answer = MSG_task_create("grant", 0, 1000, NULL); MSG_task_send(answer, req); CS_used = 1; } } else { // that's a release. Check if someone was waiting for the lock - if (xbt_dynar_length(requests) > 0) { - INFO1("CS release. Grant to queued requests (queue size: %lu)", + 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); MSG_task_send(MSG_task_create("grant", 0, 1000, NULL), req); todo--; } else { // nobody wants it - INFO0("CS release. resource now idle"); + XBT_INFO("CS release. resource now idle"); CS_used = 0; todo--; } } MSG_task_destroy(task); } - INFO0("Received all releases, quit now"); + XBT_INFO("Received all releases, quit now"); return 0; } @@ -61,26 +68,26 @@ int client(int argc, char *argv[]) // request the CS 3 times, sleeping a bit in between int i; for (i = 0; i < CS_PER_PROCESS; i++) { - INFO0("Ask the request"); + XBT_INFO("Ask the request"); MSG_task_send(MSG_task_create("request", 0, 1000, my_mailbox), "coordinator"); // wait the answer - m_task_t grant = NULL; + msg_task_t grant = NULL; MSG_task_receive(&grant, my_mailbox); MSG_task_destroy(grant); - INFO0("got the answer. Sleep a bit and release it"); + XBT_INFO("got the answer. Sleep a bit and release it"); MSG_process_sleep(1); MSG_task_send(MSG_task_create("release", 0, 1000, NULL), "coordinator"); MSG_process_sleep(my_pid); } - INFO0("Got all the CS I wanted, quit now"); + XBT_INFO("Got all the CS I wanted, quit now"); return 0; } int main(int argc, char *argv[]) { - MSG_global_init(&argc, argv); + MSG_init(&argc, argv); MSG_create_environment("../msg_platform.xml"); MSG_function_register("coordinator", coordinator); MSG_function_register("client", client);