#include "mc/mc.h"
#include "surf/surf.h"
#include "simix/smx_private.h"
+#include "simgrid/sg_config.h"
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(smpi_kernel, smpi,
/* Fortran specific stuff */
/* With smpicc, the following weak symbols are used */
/* With smpiff, the following weak symbols are replaced by those in libf2c */
-
int __attribute__((weak)) xargc;
char** __attribute__((weak)) xargv;
-int __attribute__((weak)) smpi_simulated_main(int argc, char** argv) {
+#ifndef WIN32
+void __attribute__((weak)) user_main__(){
xbt_die("Should not be in this smpi_simulated_main");
- return 1;
+ return;
+}
+int __attribute__((weak)) smpi_simulated_main__(int argc, char** argv) {
+ smpi_process_init(&argc, &argv);
+ user_main__();
+ //xbt_die("Should not be in this smpi_simulated_main");
+ return 0;
}
int __attribute__((weak)) main(int argc, char** argv) {
- return smpi_main(smpi_simulated_main,argc,argv);
+ return smpi_main(smpi_simulated_main__,argc,argv);
}
int __attribute__((weak)) MAIN__(){
- return smpi_main(smpi_simulated_main,xargc, xargv);
+ return smpi_main(smpi_simulated_main__,xargc, xargv);
};
+#endif
int smpi_main(int (*realmain) (int argc, char *argv[]),int argc, char *argv[])
{
}
/* Connect log categories. See xbt/log.c */
- XBT_LOG_CONNECT(smpi); /* Keep this line as soon as possible in this function: xbt_log_appender_file.c depends on it
- DO NOT connect this in XBT or so, or it will be useless to xbt_log_appender_file.c */
+ XBT_LOG_CONNECT(smpi); /* Keep this line as soon as possible in this
+ function: xbt_log_appender_file.c depends on it
+ DO NOT connect this in XBT or so, or it will be
+ useless to xbt_log_appender_file.c */
+#ifdef HAVE_TRACING
+ XBT_LOG_CONNECT(instr_smpi);
+#endif
XBT_LOG_CONNECT(smpi_base);
XBT_LOG_CONNECT(smpi_bench);
XBT_LOG_CONNECT(smpi_coll);
#ifdef HAVE_TRACING
TRACE_global_init(&argc, argv);
+
+ TRACE_add_start_function(TRACE_smpi_alloc);
+ TRACE_add_end_function(TRACE_smpi_release);
#endif
SIMIX_global_init(&argc, argv);
else
SIMIX_run();
- if (surf_cfg_get_int("smpi/display_timing"))
+ if (sg_cfg_get_int("smpi/display_timing"))
XBT_INFO("Simulation time: %g seconds.", SIMIX_get_clock());
smpi_global_destroy();