X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/bdfe4f8674f98efbf2d67ad854ef83a1d5f855ed..3b98b060322f446c6e9321d1a95a113135da22a4:/examples/msg/mc/centralized_mutex.c diff --git a/examples/msg/mc/centralized_mutex.c b/examples/msg/mc/centralized_mutex.c index 64008b4e09..36f9853d9f 100644 --- a/examples/msg/mc/centralized_mutex.c +++ b/examples/msg/mc/centralized_mutex.c @@ -1,26 +1,22 @@ -/* Copyright (c) 2010-2012. The SimGrid Team. +/* Copyright (c) 2010-2015. 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 */ /* reduction of DPOR. */ /******************************************************************************/ -#include "msg/msg.h" +#include "simgrid/msg.h" #define AMOUNT_OF_CLIENTS 4 #define CS_PER_PROCESS 2 XBT_LOG_NEW_DEFAULT_CATEGORY(centralized, "my log messages"); -int coordinator(int argc, char **argv); -int client(int argc, char **argv); - -int coordinator(int argc, char *argv[]) +static int coordinator(int argc, char *argv[]) { xbt_dynar_t requests = xbt_dynar_new(sizeof(char *), NULL); // dynamic vector storing requests (which are char*) int CS_used = 0; // initially the CS is idle @@ -34,18 +30,17 @@ int coordinator(int argc, char *argv[]) if (CS_used) { // need to push the request in the vector XBT_INFO("CS already used. Queue the request"); xbt_dynar_push(requests, &req); - } else { // can serve it immediatly - XBT_INFO("CS idle. Grant immediatly"); + } else { // can serve it immediately + XBT_INFO("CS idle. Grant immediately"); 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_is_empty(requests)) { - XBT_INFO("CS release. Grant to queued requests (queue size: %lu)", - xbt_dynar_length(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 @@ -60,7 +55,7 @@ int coordinator(int argc, char *argv[]) return 0; } -int client(int argc, char *argv[]) +static int client(int argc, char *argv[]) { int my_pid = MSG_process_get_PID(MSG_process_self()); // use my pid as name of mailbox to contact me @@ -69,16 +64,14 @@ int client(int argc, char *argv[]) int i; for (i = 0; i < CS_PER_PROCESS; i++) { XBT_INFO("Ask the request"); - MSG_task_send(MSG_task_create("request", 0, 1000, my_mailbox), - "coordinator"); + MSG_task_send(MSG_task_create("request", 0, 1000, my_mailbox), "coordinator"); // wait the answer msg_task_t grant = NULL; MSG_task_receive(&grant, my_mailbox); MSG_task_destroy(grant); 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_task_send(MSG_task_create("release", 0, 1000, NULL), "coordinator"); MSG_process_sleep(my_pid); } XBT_INFO("Got all the CS I wanted, quit now"); @@ -88,10 +81,10 @@ int client(int argc, char *argv[]) int main(int argc, char *argv[]) { MSG_init(&argc, argv); - MSG_create_environment("../msg_platform.xml"); + MSG_create_environment("../../platforms/small_platform.xml"); MSG_function_register("coordinator", coordinator); MSG_function_register("client", client); - MSG_launch_application("deploy_mutex.xml"); + MSG_launch_application("deploy_centralized_mutex.xml"); MSG_main(); return 0; }