X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/06924c2f26e75f3f32c0b325e94b809b8179dfcf..ead1218a18a4c91ec40c0021274be310c4220791:/examples/msg/msg_test_surfxml_bypassed.c diff --git a/examples/msg/msg_test_surfxml_bypassed.c b/examples/msg/msg_test_surfxml_bypassed.c index e55cf14472..41a00e2648 100644 --- a/examples/msg/msg_test_surfxml_bypassed.c +++ b/examples/msg/msg_test_surfxml_bypassed.c @@ -6,159 +6,148 @@ * under the terms of the license (GNU LGPL) which comes with this package. */ #include "msg/msg.h" /* Yeah! If you want to use msg, you need to include msg/msg.h */ -#include "surf/surf_parse.h" /* to override surf_parse */ -#include "surf/surfxml.h" /* to hijack surf_parse_lex */ +#include "surf/surfxml_parse.h" /* to override surf_parse */ +#include "surf/surfxml.h" /* to hijack surf_parse_lex */ /* Create a log channel to have nice outputs. */ #include "xbt/log.h" XBT_LOG_NEW_DEFAULT_CATEGORY(msg_test,"Messages specific for this msg example"); +#define FINALIZE ((void*)221297) /* a magic number to tell people to stop working */ static int surf_parse_bypass(void) { /* */ - STag_platform_description(); - - -/* */ - A_cpu_name = "Cpu A"; - A_cpu_power= "100.00"; - A_cpu_availability = "1.0"; - A_cpu_availability_file = "trace_A.txt"; - A_cpu_state = A_cpu_state_ON; - A_cpu_state_file = NULL; - A_cpu_interference_send = "1.0"; - A_cpu_interference_recv = "1.0"; - A_cpu_interference_send_recv = "1.0"; - A_cpu_max_outgoing_rate = "-1.0"; - - STag_cpu_fun(); - ETag_cpu_fun(); - -/* */ - A_cpu_name = "Cpu B"; - A_cpu_power= "100.00"; - A_cpu_availability = "1.0"; - A_cpu_availability_file = "trace_B.txt"; - A_cpu_state = A_cpu_state_ON; - A_cpu_state_file = NULL; - A_cpu_interference_send = "1.0"; - A_cpu_interference_recv = "1.0"; - A_cpu_interference_send_recv = "1.0"; - A_cpu_max_outgoing_rate = "-1.0"; - - STag_cpu_fun(); - ETag_cpu_fun(); - -/* */ - A_network_link_name = "LinkA"; - A_network_link_bandwidth = "10.0"; - A_network_link_bandwidth_file = NULL; - A_network_link_latency = "0.2"; - A_network_link_latency_file = NULL; - A_network_link_state = A_network_link_state_ON; - A_network_link_state_file = NULL; - A_network_link_sharing_policy = A_network_link_sharing_policy_SHARED; - STag_network_link(); - ETag_network_link(); + A_surfxml_platform_description_version = "1.1"; + STag_surfxml_platform_description(); + + +/* */ + A_surfxml_cpu_name = "Cpu A"; + A_surfxml_cpu_power= "100000000.00"; + A_surfxml_cpu_availability = "1.0"; + A_surfxml_cpu_availability_file = ""; + A_surfxml_cpu_state = A_surfxml_cpu_state_ON; + A_surfxml_cpu_state_file = NULL; + A_surfxml_cpu_interference_send = "1.0"; + A_surfxml_cpu_interference_recv = "1.0"; + A_surfxml_cpu_interference_send_recv = "1.0"; + A_surfxml_cpu_max_outgoing_rate = "-1.0"; + + STag_surfxml_cpu(); + ETag_surfxml_cpu(); + +/* */ + A_surfxml_cpu_name = "Cpu B"; + A_surfxml_cpu_power= "100000000.00"; + A_surfxml_cpu_availability = "1.0"; + A_surfxml_cpu_availability_file = ""; + A_surfxml_cpu_state = A_surfxml_cpu_state_ON; + A_surfxml_cpu_state_file = NULL; + A_surfxml_cpu_interference_send = "1.0"; + A_surfxml_cpu_interference_recv = "1.0"; + A_surfxml_cpu_interference_send_recv = "1.0"; + A_surfxml_cpu_max_outgoing_rate = "-1.0"; + + STag_surfxml_cpu(); + ETag_surfxml_cpu(); + +/* */ + A_surfxml_network_link_name = "LinkA"; + A_surfxml_network_link_bandwidth = "10000000.0"; + A_surfxml_network_link_bandwidth_file = NULL; + A_surfxml_network_link_latency = "0.2"; + A_surfxml_network_link_latency_file = NULL; + A_surfxml_network_link_state = A_surfxml_network_link_state_ON; + A_surfxml_network_link_state_file = NULL; + A_surfxml_network_link_sharing_policy = A_surfxml_network_link_sharing_policy_SHARED; + STag_surfxml_network_link(); + ETag_surfxml_network_link(); /* */ - A_route_src = "Cpu A"; - A_route_dst = "Cpu B"; - A_route_impact_on_src = "0.0"; - A_route_impact_on_dst = "0.0"; - A_route_impact_on_src_with_other_recv = "0.0"; - A_route_impact_on_dst_with_other_send = "0.0"; + A_surfxml_route_src = "Cpu A"; + A_surfxml_route_dst = "Cpu B"; + A_surfxml_route_impact_on_src = "0.0"; + A_surfxml_route_impact_on_dst = "0.0"; + A_surfxml_route_impact_on_src_with_other_recv = "0.0"; + A_surfxml_route_impact_on_dst_with_other_send = "0.0"; - STag_route(); + STag_surfxml_route(); - A_route_element_name = "LinkA"; - STag_route_element(); - ETag_route_element(); + A_surfxml_route_element_name = "LinkA"; + STag_surfxml_route_element(); + ETag_surfxml_route_element(); - ETag_route(); + ETag_surfxml_route(); /* */ - A_route_src = "Cpu B"; - A_route_dst = "Cpu A"; - A_route_impact_on_src = "0.0"; - A_route_impact_on_dst = "0.0"; - A_route_impact_on_src_with_other_recv = "0.0"; - A_route_impact_on_dst_with_other_send = "0.0"; + A_surfxml_route_src = "Cpu B"; + A_surfxml_route_dst = "Cpu A"; + A_surfxml_route_impact_on_src = "0.0"; + A_surfxml_route_impact_on_dst = "0.0"; + A_surfxml_route_impact_on_src_with_other_recv = "0.0"; + A_surfxml_route_impact_on_dst_with_other_send = "0.0"; - STag_route(); + STag_surfxml_route(); - A_route_element_name = "LinkA"; - STag_route_element(); - ETag_route_element(); + A_surfxml_route_element_name = "LinkA"; + STag_surfxml_route_element(); + ETag_surfxml_route_element(); - ETag_route(); + ETag_surfxml_route(); /* */ - A_process_host = "Cpu A"; - A_process_function = "master"; - A_process_start_time = "-1.0"; - A_process_kill_time = "-1.0"; - STag_process(); + A_surfxml_process_host = "Cpu A"; + A_surfxml_process_function = "master"; + A_surfxml_process_start_time = "-1.0"; + A_surfxml_process_kill_time = "-1.0"; + STag_surfxml_process(); /* */ - A_argument_value = "20"; - STag_argument(); - ETag_argument(); + A_surfxml_argument_value = "20"; + STag_surfxml_argument(); + ETag_surfxml_argument(); /* */ - A_argument_value = "50000"; - STag_argument(); - ETag_argument(); + A_surfxml_argument_value = "50000000000"; + STag_surfxml_argument(); + ETag_surfxml_argument(); /* */ - A_argument_value = "10"; - STag_argument(); - ETag_argument(); + A_surfxml_argument_value = "10000000"; + STag_surfxml_argument(); + ETag_surfxml_argument(); /* */ - A_argument_value = "Cpu B"; - STag_argument(); - ETag_argument(); + A_surfxml_argument_value = "Cpu B"; + STag_surfxml_argument(); + ETag_surfxml_argument(); /* */ - ETag_process(); + ETag_surfxml_process(); /* */ - A_process_host = "Cpu B"; - A_process_function = "slave"; - A_process_start_time = "-1.0"; - A_process_kill_time = "-1.0"; - STag_process(); - ETag_process(); + A_surfxml_process_host = "Cpu B"; + A_surfxml_process_function = "slave"; + A_surfxml_process_start_time = "-1.0"; + A_surfxml_process_kill_time = "-1.0"; + STag_surfxml_process(); + ETag_surfxml_process(); /* */ - ETag_platform_description(); + ETag_surfxml_platform_description(); return 0; } int master(int argc, char *argv[]); int slave(int argc, char *argv[]); -void test_all(const char *platform_file, const char *application_file); +MSG_error_t test_all(void); typedef enum { PORT_22 = 0, MAX_CHANNEL } channel_t; -/* This function is just used so that users can check that each process - * has received the arguments it was supposed to receive. - */ -static void print_args(int argc, char** argv) -{ - int i ; - - fprintf(stderr,"<"); - for(i=0; i\n"); -} - /** Emitter function */ int master(int argc, char *argv[]) { @@ -172,8 +161,6 @@ int master(int argc, char *argv[]) int i; - print_args(argc,argv); - xbt_assert1(sscanf(argv[1],"%d", &number_of_tasks), "Invalid argument %s\n",argv[1]); xbt_assert1(sscanf(argv[2],"%lg", &task_comp_size), @@ -226,7 +213,12 @@ int master(int argc, char *argv[]) INFO0("Send completed"); } - INFO0("All tasks have been dispatched. Bye!"); + INFO0("All tasks have been dispatched. Let's tell everybody the computation is over."); + for (i = 0; i < slaves_count; i++) + MSG_task_put(MSG_task_create("finalize", 0, 0, FINALIZE), + slaves[i], PORT_22); + + INFO0("Goodbye now!"); free(slaves); free(todo); return 0; @@ -235,21 +227,23 @@ int master(int argc, char *argv[]) /** Receiver function */ int slave(int argc, char *argv[]) { - print_args(argc,argv); - while(1) { m_task_t task = NULL; int a; a = MSG_task_get(&(task), PORT_22); if (a == MSG_OK) { - INFO1("Received \"%s\" ", task->name); - INFO1("Processing \"%s\" ", task->name); + INFO1("Received \"%s\" ", MSG_task_get_name(task)); + if(MSG_task_get_data(task)==FINALIZE) { + MSG_task_destroy(task); + break; + } + INFO1("Processing \"%s\" ", MSG_task_get_name(task)); MSG_task_execute(task); - INFO1("\"%s\" done ", task->name); + INFO1("\"%s\" done ", MSG_task_get_name(task)); MSG_task_destroy(task); } else { INFO0("Hey ?! What's up ? "); - xbt_assert0(0,"Unexpected behaviour"); + xbt_assert0(0,"Unexpected behavior"); } } INFO0("I'm done. See you!"); @@ -257,10 +251,10 @@ int slave(int argc, char *argv[]) } /* end_of_slave */ /** Test function */ -void test_all(void) +MSG_error_t test_all(void) { + MSG_error_t res = MSG_OK; - /* MSG_config("surf_workstation_model","KCCFLN05"); */ { /* Simulation setting */ MSG_set_channel_number(MAX_CHANNEL); MSG_paje_output("msg_test.trace"); @@ -270,21 +264,24 @@ void test_all(void) { /* Application deployment */ MSG_function_register("master", master); MSG_function_register("slave", slave); - MSG_function_register("forwarder", forwarder); MSG_launch_application(NULL); } - MSG_main(); + 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; + MSG_global_init(&argc,argv); - test_all(); + res = test_all(); MSG_clean(); - return (0); + + if(res==MSG_OK) return 0; + else return 1; } /* end_of_main */