Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
some MC tests still believe that platform.xml exist
[simgrid.git] / examples / msg / mc / centralized_mutex.c
index 64008b4..36f9853 100644 (file)
@@ -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;
 }