X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/1b30f00857843f1cee60814ed519ff82e8ef4787..3ddb87efeb93cc20cffe56c8e68bb430cc38a91f:/examples/msg/migration/migration.c diff --git a/examples/msg/migration/migration.c b/examples/msg/migration/migration.c index 44de664709..2fc714db07 100644 --- a/examples/msg/migration/migration.c +++ b/examples/msg/migration/migration.c @@ -1,6 +1,5 @@ -/* $Id$ */ - -/* Copyright (c) 2009 The SimGrid team. All rights reserved. */ +/* Copyright (c) 2009, 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. */ @@ -13,33 +12,42 @@ XBT_LOG_NEW_DEFAULT_CATEGORY(msg_test, "Messages specific for this msg example"); +static m_process_t process_to_migrate = NULL; + /** The guy we will move from host to host. It move alone and then is moved by policeman back */ static int emigrant(int argc, char *argv[]) { - TRACE_msg_set_process_category (MSG_process_self(), "emigrant"); m_task_t task; - INFO0 - ("I'll look for a new job on another machine where the grass is greener."); - MSG_process_change_host(MSG_get_host_by_name("Boivin")); - INFO0("Yeah, found something to do"); + XBT_INFO + ("I'll look for a new job on another machine where the grass is greener."); + MSG_process_migrate(MSG_process_self(), MSG_get_host_by_name("Boivin")); + + XBT_INFO("Yeah, found something to do"); task = MSG_task_create("job", 98095000, 0, NULL); MSG_task_execute(task); MSG_task_destroy(task); - MSG_process_sleep (2); - INFO0("Moving back home after work"); - MSG_process_change_host(MSG_get_host_by_name("Jacquelin")); - MSG_process_change_host(MSG_get_host_by_name("Boivin")); - MSG_process_sleep (4); - INFO0("Uh, nothing to do here. Stopping now"); + MSG_process_sleep(2); + XBT_INFO("Moving back home after work"); + MSG_process_migrate(MSG_process_self(), MSG_get_host_by_name("Jacquelin")); + MSG_process_migrate(MSG_process_self(), MSG_get_host_by_name("Boivin")); + MSG_process_sleep(4); + process_to_migrate = MSG_process_self(); + MSG_process_suspend(MSG_process_self()); + m_host_t h = MSG_process_get_host(MSG_process_self()); + XBT_INFO("I've been moved on this new host: %s", h->name); + XBT_INFO("Uh, nothing to do here. Stopping now"); return 0; } /* end_of_emigrant */ -/* This function would move the emigrant back home, if it were possible to do so in the MSG API. - * Nothing for now. - */ + +/* This function move the emigrant on Jacquelin */ static int policeman(int argc, char *argv[]) { - INFO0("No function in the API to move the emigrant back, so do nothing."); + XBT_INFO("Wait a bit before migrating the emigrant."); + while (process_to_migrate == NULL) MSG_process_sleep(1); + MSG_process_migrate(process_to_migrate, MSG_get_host_by_name("Jacquelin")); + XBT_INFO("I moved the emigrant"); + MSG_process_resume(process_to_migrate); return 0; } /* end_of_policeman */ @@ -49,14 +57,11 @@ int main(int argc, char *argv[]) { MSG_error_t res = MSG_OK; - TRACE_start_with_mask ("zmsg_test.trace", TRACE_PLATFORM|TRACE_PROCESS); - TRACE_category ("emigrant"); - /* Argument checking */ MSG_global_init(&argc, argv); if (argc < 3) { - CRITICAL1("Usage: %s platform_file deployment_file\n", argv[0]); - CRITICAL1("example: %s msg_platform.xml msg_deployment_suspend.xml\n", + XBT_CRITICAL("Usage: %s platform_file deployment_file\n", argv[0]); + XBT_CRITICAL("example: %s msg_platform.xml msg_deployment_suspend.xml\n", argv[0]); exit(1); } @@ -66,16 +71,15 @@ int main(int argc, char *argv[]) /* Application deployment */ MSG_function_register("emigrant", emigrant); + MSG_function_register("policeman", policeman); MSG_launch_application(argv[2]); /* Run the simulation */ res = MSG_main(); - INFO1("Simulation time %g", MSG_get_clock()); + XBT_INFO("Simulation time %g", MSG_get_clock()); if (res == MSG_OK) res = MSG_clean(); - TRACE_end (); - if (res == MSG_OK) return 0; else