X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/45c3f1cfee86fb48c96d53f8267f99b6db6e3d7a..e2d280829e07d8b5e96c96bd4b2fd815e8311102:/examples/msg/mc/bugged2_liveness.c diff --git a/examples/msg/mc/bugged2_liveness.c b/examples/msg/mc/bugged2_liveness.c index d6beac0f42..5a6d2d23fc 100644 --- a/examples/msg/mc/bugged2_liveness.c +++ b/examples/msg/mc/bugged2_liveness.c @@ -1,5 +1,4 @@ -/* Copyright (c) 2012-2014. The SimGrid Team. - * All rights reserved. */ +/* Copyright (c) 2012-2018. 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. */ @@ -10,39 +9,29 @@ /* LTL property checked : !(GFcs) */ /******************************************************************************/ -#include "msg/msg.h" -#include "mc/mc.h" -#include "xbt/automaton.h" -#include "bugged2_liveness.h" +#include +#include XBT_LOG_NEW_DEFAULT_CATEGORY(bugged3, "my log messages"); - -int cs = 0; - -int predCS(){ - return cs; -} - -int coordinator(int argc, char **argv); -int client(int argc, char **argv); +int cs = 0; -int coordinator(int argc, char *argv[]) +static int coordinator(int argc, char *argv[]) { int CS_used = 0; // initially the CS is idle - + while (1) { msg_task_t task = NULL; MSG_task_receive(&task, "coordinator"); const char *kind = MSG_task_get_name(task); //is it a request or a release? if (!strcmp(kind, "request")) { // that's a request char *req = MSG_task_get_data(task); - if (CS_used) { + if (CS_used) { XBT_INFO("CS already used."); msg_task_t answer = MSG_task_create("not grant", 0, 1000, NULL); MSG_task_send(answer, 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; @@ -54,57 +43,46 @@ int coordinator(int argc, char *argv[]) MSG_task_destroy(task); kind = NULL; } - + 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()); char *my_mailbox = xbt_strdup(argv[1]); - const char* kind; - - while(1){ + while(1){ XBT_INFO("Client (%s) asks the request", my_mailbox); - MSG_task_send(MSG_task_create("request", 0, 1000, my_mailbox), - "coordinator"); + MSG_task_send(MSG_task_create("request", 0, 1000, my_mailbox), "coordinator"); msg_task_t answer = NULL; MSG_task_receive(&answer, my_mailbox); - kind = MSG_task_get_name(answer); - - if (!strcmp(kind, "grant")) { + const char* kind = MSG_task_get_name(answer); + if (!strcmp(kind, "grant")) { XBT_INFO("Client (%s) got the answer (grant). Sleep a bit and release it", my_mailbox); - if(!strcmp(my_mailbox, "1")) cs = 1; - }else{ - XBT_INFO("Client (%s) got the answer (not grant). Try again", my_mailbox); - } MSG_task_destroy(answer); kind = NULL; - + MSG_process_sleep(my_pid); } - return 0; } int main(int argc, char *argv[]) { - MSG_init(&argc, argv); - MSG_config("model-check/property","promela_bugged2_liveness"); - MC_automaton_new_propositional_symbol("cs", &predCS); - + MC_automaton_new_propositional_symbol_pointer("cs", &cs); + MSG_create_environment("../msg_platform.xml"); MSG_function_register("coordinator", coordinator); MSG_function_register("client", client);