- if (CS_used) { // need to push the request in the vector
- XBT_INFO("CS already used. Queue the request of client %d", atoi(req) +1);
- xbt_dynar_push(requests, &req);
- } else { // can serve it immediatly
- if(strcmp(req, "1") == 0){
- m_task_t answer = MSG_task_create("grant", 0, 1000, NULL);
- MSG_task_send(answer, req);
- CS_used = 1;
- XBT_INFO("CS idle. Grant immediatly");
- }
- }
- } else { // that's a release. Check if someone was waiting for the lock
- if (xbt_dynar_length(requests) > 0) {
- XBT_INFO("CS release. Grant to queued requests (queue size: %lu)", xbt_dynar_length(requests));
- char *req ;
- xbt_dynar_get_cpy(requests, (xbt_dynar_length(requests) - 1), &req);
- if(strcmp(req, "1") == 0){
- xbt_dynar_pop(requests, &req);
- MSG_task_send(MSG_task_create("grant", 0, 1000, NULL), req);
- todo--;
- }else{
- xbt_dynar_pop(requests, &req);
- MSG_task_send(MSG_task_create("notgrant", 0, 1000, NULL), req);
- CS_used = 0;
- todo--;
- }
- } else { // nobody wants it
- XBT_INFO("CS release. resource now idle");
- CS_used = 0;
- todo--;
+ if (CS_used) {
+ XBT_INFO("CS already used.");
+ } else {
+ if(strcmp(req, "2") == 0){
+ XBT_INFO("CS idle. Grant immediatly");
+ MC_compare();
+ answer = MSG_task_create("grant", 0, 1000, NULL);
+ MSG_task_send(answer, req);
+ CS_used = 1;
+ answer = NULL;
+ }