/***************** 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. */
+/* CS requests of client 2 not satisfied */
/******************************************************************************/
#include "msg/msg.h"
#include "y.tab.c"
#define AMOUNT_OF_CLIENTS 2
-#define CS_PER_PROCESS 3
+#define CS_PER_PROCESS 4
XBT_LOG_NEW_DEFAULT_CATEGORY(example_liveness_with_cycle, "my log messages");
int my_pid = MSG_process_get_PID(MSG_process_self());
char *my_mailbox = bprintf("%s", argv[1]);
- // request the CS 3 times, sleeping a bit in between
int i;
-
+
+ // request the CS 4 times, sleeping a bit in between
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");
+
if(strcmp(my_mailbox, "2") == 0){
p = 1;
q = 0;
+ XBT_DEBUG("Propositions changed : p=1, q=0");
}
+
// wait the answer
m_task_t grant = NULL;
MSG_task_receive(&grant, my_mailbox);
if(strcmp(my_mailbox, "2") == 0){
q = 1;
p = 0;
+ XBT_DEBUG("Propositions changed : p=0, q=1");
}
+
MSG_task_destroy(grant);
XBT_INFO("%s got the answer. Sleep a bit and release it", argv[1]);
MSG_process_sleep(1);
MSG_process_sleep(my_pid);
- q=0;
- p=0;
+ if(strcmp(my_mailbox, "2") == 0){
+ q=0;
+ p=0;
+ XBT_DEBUG("Propositions changed : p=0, q=0");
+ }
-
}
XBT_INFO("Got all the CS I wanted (%s), quit now", my_mailbox);
MSG_function_register("coordinator", coordinator);
MSG_function_register("client", client);
MSG_launch_application("deploy_mutex2.xml");
- MSG_main_liveness_stateless(automaton);
- //MSG_main();
+ MSG_main_liveness_stateless(automaton, argv[0]);
return 0;
}