From 6656e9c8f2cac1323f2a090746ffede276cb5469 Mon Sep 17 00:00:00 2001 From: alegrand Date: Mon, 17 Oct 2005 15:11:54 +0000 Subject: [PATCH] stupid example of msg_process_suspend and resume git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@1756 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- examples/msg/Makefile.am | 5 +- examples/msg/msg_deployment_suspend.xml | 5 ++ examples/msg/msg_test_suspend.c | 84 +++++++++++++++++++++++++ examples/msg/run_msg_test.in | 3 + 4 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 examples/msg/msg_deployment_suspend.xml create mode 100644 examples/msg/msg_test_suspend.c diff --git a/examples/msg/Makefile.am b/examples/msg/Makefile.am index 69546e9e97..1cb245f2d5 100644 --- a/examples/msg/Makefile.am +++ b/examples/msg/Makefile.am @@ -5,7 +5,7 @@ EXTRA_DIST= msg_deployment.xml msg_platform.xml small_platform.xml small_deploym CLEANFILES=msg_test.trace TESTS=run_msg_test -check_PROGRAMS=msg_test msg_test_surfxml_bypassed +check_PROGRAMS=msg_test msg_test_surfxml_bypassed msg_test_suspend msg_test_SOURCES= msg_test.c msg_test_LDADD= $(top_builddir)/src/libsimgrid.la @@ -13,4 +13,7 @@ msg_test_LDADD= $(top_builddir)/src/libsimgrid.la msg_test_surfxml_bypassed_SOURCES = msg_test_surfxml_bypassed.c msg_test_surfxml_bypassed_LDADD = $(top_builddir)/src/libsimgrid.la +msg_test_suspend_SOURCES= msg_test_suspend.c +msg_test_suspend_LDADD= $(top_builddir)/src/libsimgrid.la + include $(top_srcdir)/acmacro/dist-files.mk diff --git a/examples/msg/msg_deployment_suspend.xml b/examples/msg/msg_deployment_suspend.xml new file mode 100644 index 0000000000..72821c58fe --- /dev/null +++ b/examples/msg/msg_deployment_suspend.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/examples/msg/msg_test_suspend.c b/examples/msg/msg_test_suspend.c new file mode 100644 index 0000000000..e1119a82ef --- /dev/null +++ b/examples/msg/msg_test_suspend.c @@ -0,0 +1,84 @@ +/* $Id$ */ + +/* Copyright (c) 2005 Arnaud Legrand. 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 "msg/msg.h" /* Yeah! If you want to use msg, you need to include msg/msg.h */ + + +/* 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"); + +typedef enum { + PORT_22 = 0, + MAX_CHANNEL +} channel_t; + + +/** Lazy guy function. This process suspends itself asap. */ +static int lazy_guy(int argc, char *argv[]) +{ + INFO0("Nobody's watching me ? Let's go to sleep."); + MSG_process_suspend(MSG_process_self()); + INFO0("Uuuh ? Did somebody call me ?"); + INFO0("Mmmh, goodbye now."); + return 0; +} /* end_of_lazy_guy */ + +/** Dream master function. This process creates a lazy_guy process and + resumes it 10 seconds later. */ +static int dream_master(int argc, char *argv[]) +{ + m_process_t lazy = NULL; + + INFO0("Let's create a lazy guy."); + lazy = MSG_process_create("Lazy", lazy_guy, NULL, MSG_host_self()); + INFO0("Let's wait a little bit..."); + MSG_process_sleep(10.0); + INFO0("Let's wake the lazy guy up! >:) BOOOOOUUUHHH!!!!"); + MSG_process_resume(lazy); + INFO0("OK, goodbye now."); + return 0; +} /* end_of_dram_master */ + +/** Test function */ +static MSG_error_t test_all(const char *platform_file,const char *application_file) +{ + MSG_error_t res = MSG_OK; + + { /* Simulation setting */ + MSG_set_channel_number(MAX_CHANNEL); + MSG_paje_output("msg_test.trace"); + MSG_create_environment(platform_file); + } + { /* Application deployment */ + MSG_function_register("dream_master", dream_master); + 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; + + 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_suspend.xml\n",argv[0]); + exit(1); + } + test_all(argv[1],argv[2]); + res = MSG_clean(); + + if(res==MSG_OK) return 0; + else return 1; +} /* end_of_main */ diff --git a/examples/msg/run_msg_test.in b/examples/msg/run_msg_test.in index b89eb778fa..2d7bbad673 100644 --- a/examples/msg/run_msg_test.in +++ b/examples/msg/run_msg_test.in @@ -10,3 +10,6 @@ $exenv ./msg_test@EXEEXT@ @srcdir@/msg_platform.xml @srcdir@/msg_deployment.xml $exenv ./msg_test@EXEEXT@ @srcdir@/small_platform.xml @srcdir@/small_deployment.xml $@ $exenv ./msg_test_surfxml_bypassed@EXEEXT@ + +$exenv ./msg_test_suspend@EXEEXT@ @srcdir@/msg_platform.xml @srcdir@/msg_deployment_suspend.xml $@ + -- 2.20.1