X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/750d6156bb45de179d64d5d6e0de1b7a1f2dc9e2..3f6f4cda91fafc2e04ed432f6f5bb38e4eaaf2df:/examples/msg/masterslave/masterslave_mailbox.c diff --git a/examples/msg/masterslave/masterslave_mailbox.c b/examples/msg/masterslave/masterslave_mailbox.c index 6341506ab6..1273e90dfa 100644 --- a/examples/msg/masterslave/masterslave_mailbox.c +++ b/examples/msg/masterslave/masterslave_mailbox.c @@ -1,23 +1,24 @@ -/* $Id$ */ - -/* Copyright (c) 2002,2003,2004 Arnaud Legrand. All rights reserved. */ +/* Copyright (c) 2010. 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 -#include "msg/msg.h" /* Yeah! If you want to use msg, you need to include msg/msg.h */ -#include "xbt/sysdep.h" /* calloc, printf */ +#include "msg/msg.h" /* Yeah! If you want to use msg, you need to include msg/msg.h */ +#include "xbt/sysdep.h" /* calloc, printf */ /* Create a log channel to have nice outputs. */ #include "xbt/log.h" #include "xbt/asserts.h" -XBT_LOG_NEW_DEFAULT_CATEGORY(msg_test,"Messages specific for this msg example"); +XBT_LOG_NEW_DEFAULT_CATEGORY(msg_test, + "Messages specific for this msg example"); int master(int argc, char *argv[]); int slave(int argc, char *argv[]); int forwarder(int argc, char *argv[]); -MSG_error_t test_all(const char *platform_file, const char *application_file); +MSG_error_t test_all(const char *platform_file, + const char *application_file); /** Emitter function */ int master(int argc, char *argv[]) @@ -27,128 +28,107 @@ int master(int argc, char *argv[]) double task_comm_size = atof(argv[3]); long slaves_count = atol(argv[4]); - TRACE_host_variable_set ("is_master", 1); - int i; - INFO2("Got %ld slaves and %ld tasks to process", slaves_count,number_of_tasks); + XBT_INFO("Got %ld slaves and %ld tasks to process", slaves_count, + number_of_tasks); for (i = 0; i < number_of_tasks; i++) { char mailbox[256]; char sprintf_buffer[256]; - m_task_t task=NULL; + m_task_t task = NULL; - sprintf(mailbox,"slave-%ld",i % slaves_count); + sprintf(mailbox, "slave-%ld", i % slaves_count); sprintf(sprintf_buffer, "Task_%d", i); - task = MSG_task_create(sprintf_buffer, task_comp_size, task_comm_size, NULL); - TRACE_host_variable_set ("task_creation", i); - TRACE_msg_set_task_category (task, "compute"); - if (number_of_tasks<10000 || i%10000 == 0) - INFO3("Sending \"%s\" (of %ld) to mailbox \"%s\"", task->name, number_of_tasks, mailbox); - + task = + MSG_task_create(sprintf_buffer, task_comp_size, task_comm_size, + NULL); + if (number_of_tasks < 10000 || i % 10000 == 0) + XBT_INFO("Sending \"%s\" (of %ld) to mailbox \"%s\"", task->name, + number_of_tasks, mailbox); + MSG_task_send(task, mailbox); } - - INFO0("All tasks have been dispatched. Let's tell everybody the computation is over."); - for (i = 0; i < slaves_count; i++) { - char mailbox[80]; - - sprintf(mailbox,"slave-%ld",i % slaves_count); - m_task_t finalize = MSG_task_create ("finalize", 0, 0, 0); - TRACE_msg_set_task_category(finalize, "finalize"); - MSG_task_send(finalize, mailbox); - } - -// INFO0("Goodbye now!"); + + XBT_INFO + ("All tasks have been dispatched. Let's tell everybody the computation is over."); + for (i = 0; i < slaves_count; i++) { + char mailbox[80]; + + sprintf(mailbox, "slave-%ld", i % slaves_count); + m_task_t finalize = MSG_task_create("finalize", 0, 0, 0); + MSG_task_send(finalize, mailbox); + } + +// XBT_INFO("Goodbye now!"); return 0; -} /* end_of_master */ +} /* end_of_master */ /** Receiver function */ int slave(int argc, char *argv[]) { m_task_t task = NULL; - int res; + _XBT_GNUC_UNUSED int res; int id = -1; char mailbox[80]; + _XBT_GNUC_UNUSED int read; - TRACE_host_variable_set ("is_slave", 1); - - xbt_assert1(sscanf(argv[1],"%d", &id), - "Invalid argument %s\n",argv[1]); + read = sscanf(argv[1], "%d", &id); + xbt_assert(read, "Invalid argument %s\n", argv[1]); - sprintf(mailbox,"slave-%d",id); + sprintf(mailbox, "slave-%d", id); - while(1) { + while (1) { res = MSG_task_receive(&(task), mailbox); - xbt_assert0(res == MSG_OK, "MSG_task_get failed"); + xbt_assert(res == MSG_OK, "MSG_task_get failed"); -// INFO1("Received \"%s\"", MSG_task_get_name(task)); - if (!strcmp(MSG_task_get_name(task),"finalize")) { - MSG_task_destroy(task); - break; +// XBT_INFO("Received \"%s\"", MSG_task_get_name(task)); + if (!strcmp(MSG_task_get_name(task), "finalize")) { + MSG_task_destroy(task); + break; } - -// INFO1("Processing \"%s\"", MSG_task_get_name(task)); - TRACE_host_variable_add ("task_computation", MSG_task_get_compute_duration(task)); +// XBT_INFO("Processing \"%s\"", MSG_task_get_name(task)); MSG_task_execute(task); -// INFO1("\"%s\" done", MSG_task_get_name(task)); +// XBT_INFO("\"%s\" done", MSG_task_get_name(task)); MSG_task_destroy(task); task = NULL; } - INFO0("I'm done. See you!"); + XBT_INFO("I'm done. See you!"); return 0; -} /* end_of_slave */ +} /* end_of_slave */ -/** Test function */ -MSG_error_t test_all(const char *platform_file, - const char *application_file) +/** Main function */ +int main(int argc, char *argv[]) { - MSG_error_t res = MSG_OK; + MSG_error_t res; + const char *platform_file; + const char *application_file; + + MSG_global_init(&argc, argv); + if (argc < 3) { + printf("Usage: %s platform_file deployment_file\n", argv[0]); + printf("example: %s msg_platform.xml msg_deployment.xml\n", argv[0]); + exit(1); + } + platform_file = argv[1]; + application_file = argv[2]; /* MSG_config("workstation/model","KCCFLN05"); */ - { /* Simulation setting */ - MSG_set_channel_number(0); + { /* Simulation setting */ MSG_create_environment(platform_file); } - { /* Application deployment */ + { /* Application deployment */ MSG_function_register("master", master); MSG_function_register("slave", slave); MSG_launch_application(application_file); } res = MSG_main(); - - INFO1("Simulation time %g",MSG_get_clock()); - return res; -} /* end_of_test_all */ - - -/** Main function */ -int main(int argc, char *argv[]) -{ - MSG_error_t res = MSG_OK; - - TRACE_start ("zmsg_test.trace"); - TRACE_host_variable_declare ("is_slave"); - TRACE_host_variable_declare ("is_master"); - TRACE_host_variable_declare ("task_creation"); - TRACE_host_variable_declare ("task_computation"); - TRACE_category ("compute"); - TRACE_category ("finalize"); - MSG_global_init(&argc,argv); - if (argc < 3) { - printf ("Usage: %s platform_file deployment_file\n",argv[0]); - printf ("example: %s msg_platform.xml msg_deployment.xml\n",argv[0]); - exit(1); - } - res = test_all(argv[1],argv[2]); - SIMIX_message_sizes_output("toto.txt"); + XBT_INFO("Simulation time %g", MSG_get_clock()); MSG_clean(); - TRACE_end(); - - if(res==MSG_OK) + if (res == MSG_OK) return 0; else return 1; -} /* end_of_main */ +} /* end_of_main */