Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of scm.gforge.inria.fr:/gitroot/simgrid/simgrid
[simgrid.git] / examples / smpi / mc / mutual_exclusion.c
index a917060..c63b9fd 100644 (file)
@@ -1,3 +1,9 @@
+/* Copyright (c) 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. */
+
 #include <stdio.h>
 #include <mpi.h>
 #include <simgrid/modelchecker.h>
 #include <stdio.h>
 #include <mpi.h>
 #include <simgrid/modelchecker.h>
 #define RELEASE_TAG 2
 
 int main(int argc, char **argv){
 #define RELEASE_TAG 2
 
 int main(int argc, char **argv){
-
   int err, size, rank;
   int recv_buff;
   MPI_Status status;
   int CS_used = 0;
   xbt_dynar_t requests = xbt_dynar_new(sizeof(int), NULL);
   int err, size, rank;
   int recv_buff;
   MPI_Status status;
   int CS_used = 0;
   xbt_dynar_t requests = xbt_dynar_new(sizeof(int), NULL);
-  
+
   /* Initialize MPI */
   err = MPI_Init(&argc, &argv);
   if(err !=  MPI_SUCCESS){
   /* Initialize MPI */
   err = MPI_Init(&argc, &argv);
   if(err !=  MPI_SUCCESS){
@@ -24,9 +29,9 @@ int main(int argc, char **argv){
   MC_ignore(&(status.count), sizeof(status.count));
 
   /* Get number of processes */
   MC_ignore(&(status.count), sizeof(status.count));
 
   /* Get number of processes */
-  err = MPI_Comm_size(MPI_COMM_WORLD, &size);
+  MPI_Comm_size(MPI_COMM_WORLD, &size);
   /* Get id of this process */
   /* Get id of this process */
-  err = MPI_Comm_rank(MPI_COMM_WORLD, &rank);
+  MPI_Comm_rank(MPI_COMM_WORLD, &rank);
 
   if(rank == 0){ /* Coordinator */
     while(1){
 
   if(rank == 0){ /* Coordinator */
     while(1){
@@ -42,8 +47,7 @@ int main(int argc, char **argv){
         }
       }else{
         if(!xbt_dynar_is_empty(requests)){
         }
       }else{
         if(!xbt_dynar_is_empty(requests)){
-          printf("CS release. Grant to queued requests (queue size: %lu)",
-              xbt_dynar_length(requests));
+          printf("CS release. Grant to queued requests (queue size: %lu)", xbt_dynar_length(requests));
           xbt_dynar_shift(requests, &recv_buff);
           MPI_Send(&rank, 1, MPI_INT, recv_buff, GRANT_TAG, MPI_COMM_WORLD);
           CS_used = 1;
           xbt_dynar_shift(requests, &recv_buff);
           MPI_Send(&rank, 1, MPI_INT, recv_buff, GRANT_TAG, MPI_COMM_WORLD);
           CS_used = 1;
@@ -57,12 +61,11 @@ int main(int argc, char **argv){
     while(1){
       printf("%d asks the request.\n", rank);
       MPI_Send(&rank, 1, MPI_INT, 0, REQUEST_TAG, MPI_COMM_WORLD);
     while(1){
       printf("%d asks the request.\n", rank);
       MPI_Send(&rank, 1, MPI_INT, 0, REQUEST_TAG, MPI_COMM_WORLD);
-    
+
       MPI_Recv(&recv_buff, 1, MPI_INT, 0, MPI_ANY_TAG, MPI_COMM_WORLD, &status);
       MPI_Recv(&recv_buff, 1, MPI_INT, 0, MPI_ANY_TAG, MPI_COMM_WORLD, &status);
-    
+
       printf("%d got the answer. Release it.\n", rank);
       MPI_Send(&rank, 1, MPI_INT, 0, RELEASE_TAG, MPI_COMM_WORLD);
       printf("%d got the answer. Release it.\n", rank);
       MPI_Send(&rank, 1, MPI_INT, 0, RELEASE_TAG, MPI_COMM_WORLD);
-    
     }
   }
 
     }
   }