Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Do not make an expensive call to get_route if it is not needed.
[simgrid.git] / src / simix / private.h
index 1991733..cce6355 100644 (file)
@@ -12,6 +12,7 @@
 #include "xbt/fifo.h"
 #include "xbt/swag.h"
 #include "xbt/dict.h"
+#include "xbt/mallocator.h"
 #include "xbt/config.h"
 #include "xbt/function_types.h"
 #include "xbt/ex_interface.h"
 #include "synchro_private.h"
 #include "simix/context.h"
 
-/********************************** Simix Global ******************************/
-
+/* Define only for SimGrid benchmarking purposes */
+#undef TIME_BENCH
 
+/********************************** Simix Global ******************************/
 typedef struct s_smx_global {
   smx_context_factory_t context_factory;
-  xbt_dict_t host;
   xbt_dynar_t process_to_run;
   xbt_swag_t process_list;
   xbt_swag_t process_to_destroy;
   smx_process_t maestro_process;
   xbt_dict_t registered_functions;
   smx_creation_func_t create_process_function;
-  void_f_pvoid_t kill_process_function;
+  void_pfn_smxprocess_t kill_process_function;
   void_pfn_smxprocess_t cleanup_process_function;
+  xbt_mallocator_t action_mallocator;
 } s_smx_global_t, *smx_global_t;
 
 extern smx_global_t simix_global;
@@ -148,11 +150,11 @@ static XBT_INLINE e_smx_state_t SIMIX_action_map_state(e_surf_action_state_t sta
   }
 }
 
-
-
 void SIMIX_context_mod_init(void);
 void SIMIX_context_mod_exit(void);
 
+XBT_INLINE void SIMIX_context_set_current(smx_context_t context);
+XBT_INLINE smx_context_t SIMIX_context_get_current(void);
 
 /* All factories init */
 void SIMIX_ctx_thread_factory_init(smx_context_factory_t *factory);
@@ -258,5 +260,14 @@ static XBT_INLINE void* SIMIX_context_get_data(smx_context_t context)
   return (*(simix_global->context_factory->get_data))(context);
 }
 
+/**
+ \brief returns the thread's pid running the current context
+ \return The pid
+ */
+static XBT_INLINE int SIMIX_context_get_thread_id(void)
+{
+  return (*(simix_global->context_factory->get_thread_id))();
+}
+
 XBT_PUBLIC(int) SIMIX_process_get_maxpid(void);
 #endif