-/* $Id$ */
-
-/* Copyright (c) 2007 Arnaud Legrand, Bruno Donassolo.
- All rights reserved. */
+/* Copyright (c) 2007, 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. */
DEBUG3("Process %s(%s) will be started at time %f", arg->name,
arg->hostname, start_time);
if (simix_global->create_process_function)
- surf_timer_model->extension_public->set(start_time, (void *)
- simix_global->create_process_function,
- arg);
+ surf_timer_model->extension.timer.set(start_time, (void *)
+ simix_global->create_process_function,
+ arg);
else
- surf_timer_model->extension_public->set(start_time, (void *)
- &SIMIX_process_create, arg);
+ surf_timer_model->extension.timer.set(start_time, (void *)
+ &SIMIX_process_create, arg);
- }
- if ((start_time < 0) || (start_time == SIMIX_get_clock())) {
+ } else { // start_time <= SIMIX_get_clock()
DEBUG2("Starting Process %s(%s) right now", parse_argv[0], parse_host);
if (simix_global->create_process_function)
else
process = SIMIX_process_create(parse_argv[0], parse_code, NULL, parse_host, parse_argc, parse_argv, /*the props */
current_property_set);
-
+ /* verify if process has been created (won't be the case if the host is currently dead, but that's fine) */
+ if (!process) {
+ xbt_free(parse_host);
+ return;
+ }
if (kill_time > SIMIX_get_clock()) {
- if (simix_global->kill_process_function)
- surf_timer_model->extension_public->set(start_time, (void *)
- simix_global->kill_process_function,
- arg);
- else
- surf_timer_model->extension_public->set(kill_time, (void *)
- &SIMIX_process_kill,
- (void *) process);
+ if (simix_global->kill_process_function)
+ surf_timer_model->extension.timer.set(start_time, (void *)
+ simix_global->kill_process_function,
+ process);
+ else
+ surf_timer_model->extension.timer.set(kill_time, (void *)
+ &SIMIX_process_kill,
+ (void *) process);
}
xbt_free(parse_host);
}
}
-/**
+/**
* \brief An application deployer.
*
* Creates the process described in \a file.
- * \param file a filename of a xml description of the application. This file
+ * \param file a filename of a xml description of the application. This file
* follows this DTD :
*
* \include surfxml.dtd
*
- * Here is a small example of such a platform
+ * Here is a small example of such a platform
*
* \include small_deployment.xml
*
/**
* \brief Registers a #smx_process_code_t code in a global table.
*
- * Registers a code function in a global table.
- * This table is then used by #SIMIX_launch_application.
+ * Registers a code function in a global table.
+ * This table is then used by #SIMIX_launch_application.
* \param name the reference name of the function.
* \param code the function
*/
-void SIMIX_function_register(const char *name, xbt_main_func_t code)
+XBT_INLINE void SIMIX_function_register(const char *name, xbt_main_func_t code)
{
xbt_assert0(simix_global,
"SIMIX_global_init has to be called before SIMIX_function_register.");
* \brief Gets a #smx_process_t code from the global table.
*
* Gets a code function from the global table. Returns NULL if there are no function registered with the name.
- * This table is then used by #SIMIX_launch_application.
+ * This table is then used by #SIMIX_launch_application.
* \param name the reference name of the function.
* \return The #smx_process_t or NULL.
*/
xbt_main_func_t SIMIX_get_registered_function(const char *name)
{
+ xbt_main_func_t res = NULL;
xbt_assert0(simix_global,
"SIMIX_global_init has to be called before SIMIX_get_registered_function.");
- xbt_main_func_t res =
- xbt_dict_get_or_null(simix_global->registered_functions, name);
+ res = xbt_dict_get_or_null(simix_global->registered_functions, name);
return res ? res : default_function;
}