-/* Copyright (c) 2007-2010, 2012-2014. The SimGrid Team.
+/* Copyright (c) 2007-2010, 2012-2015. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
#include "popping_private.h"
#include "smx_synchro_private.h"
+SG_BEGIN_DECL()
+
/* Define only for SimGrid benchmarking purposes */
//#define TIME_BENCH_PER_SR /* this aims at measuring the time spent in each scheduling round per each thread. The code is thus run in sequential to bench separately each SSR */
//#define TIME_BENCH_AMDAHL /* this aims at measuring the porting of time that could be parallelized at maximum (to get the optimal speedup by applying the amdahl law). */
xbt_dict_t registered_functions;
smx_creation_func_t create_process_function;
void_pfn_smxprocess_t_smxprocess_t kill_process_function;
+ /** Callback used when killing a SMX_process */
void_pfn_smxprocess_t cleanup_process_function;
xbt_mallocator_t synchro_mallocator;
- void_pfn_smxhost_t autorestart;
+ void_pfn_sghost_t autorestart;
#ifdef TIME_BENCH_AMDAHL
xbt_os_timer_t timer_seq; /* used to bench the sequential and parallel parts of the simulation, if requested to */
xbt_os_timer_t timer_par;
#endif
+
+ xbt_os_mutex_t mutex;
} s_smx_global_t, *smx_global_t;
XBT_PUBLIC_DATA(smx_global_t) simix_global;
extern xbt_dict_t watched_hosts_lib;
-#ifdef __cplusplus
-extern "C" {
-#endif
XBT_PUBLIC(void) SIMIX_clean(void);
-#ifdef __cplusplus
-}
-#endif
/******************************** Exceptions *********************************/
/** @brief Ask to the provided simix process to raise the provided exception */
union {
struct {
- smx_host_t host; /* The host where the execution takes place */
+ sg_host_t host; /* The host where the execution takes place */
surf_action_t surf_exec; /* The Surf execution action encapsulated */
} execution; /* Possibly parallel execution */
} comm;
struct {
- smx_host_t host; /* The host that is sleeping */
+ sg_host_t host; /* The host that is sleeping */
surf_action_t surf_sleep; /* The Surf sleeping action encapsulated */
} sleep;
} synchro;
struct {
- smx_host_t host;
+ sg_host_t host;
surf_action_t surf_io;
} io;
};
int latency_limited;
#endif
-#ifdef HAVE_TRACING
char *category; /* simix action category for instrumentation */
-#endif
} s_smx_synchro_t;
void SIMIX_context_mod_init(void);
void SIMIX_ctx_thread_factory_init(smx_context_factory_t *factory);
void SIMIX_ctx_sysv_factory_init(smx_context_factory_t *factory);
void SIMIX_ctx_raw_factory_init(smx_context_factory_t *factory);
+void SIMIX_ctx_boost_factory_init(smx_context_factory_t *factory);
/* ****************************** */
/* context manipulation functions */
void SIMIX_post_create_environment(void);
+SG_END_DECL()
+
#endif