Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
inline a bunch of useless functions
[simgrid.git] / src / simix / smx_private.hpp
index a6051cc..abea06b 100644 (file)
@@ -9,49 +9,17 @@
 
 #include <simgrid/simix.hpp>
 #include "smx_private.h"
+#include "src/simix/popping_private.h"
 
-/**
- * \brief destroy a context
- * \param context the context to destroy
- * Argument must be stopped first -- runs in maestro context
- */
-static XBT_INLINE void SIMIX_context_free(smx_context_t context)
-{
-  delete context;
-}
-
-/**
- * \brief stops the execution of a context
- * \param context to stop
- */
-static XBT_INLINE void SIMIX_context_stop(smx_context_t context)
-{
-  context->stop();
-}
-
-/**
- \brief suspends a context and return the control back to the one which
-        scheduled it
- \param context the context to be suspended (it must be the running one)
- */
-static XBT_INLINE void SIMIX_context_suspend(smx_context_t context)
-{
-  context->suspend();
-}
-
-/**
- \brief Executes all the processes to run (in parallel if possible).
- */
-static XBT_INLINE void SIMIX_context_runall(void)
+/** @brief Executes all the processes to run (in parallel if possible). */
+static inline void SIMIX_context_runall(void)
 {
   if (!xbt_dynar_is_empty(simix_global->process_to_run))
     simix_global->context_factory->run_all();
 }
 
-/**
- \brief returns the current running context
- */
-static XBT_INLINE smx_context_t SIMIX_context_self(void)
+/** @brief returns the current running context */
+static inline smx_context_t SIMIX_context_self(void)
 {
   if (simix_global && simix_global->context_factory)
     return simix_global->context_factory->self();
@@ -59,16 +27,6 @@ static XBT_INLINE smx_context_t SIMIX_context_self(void)
     return nullptr;
 }
 
-/**
- \brief returns the SIMIX process associated to a context
- \param context The context
- \return The SIMIX process
- */
-static XBT_INLINE smx_process_t SIMIX_context_get_process(smx_context_t context)
-{
-  return context->process();
-}
-
 namespace simgrid {
 namespace simix {
 
@@ -77,6 +35,15 @@ XBT_PRIVATE ContextFactory* sysv_factory();
 XBT_PRIVATE ContextFactory* raw_factory();
 XBT_PRIVATE ContextFactory* boost_factory();
 
+template<class R, class... Args> inline
+R simcall(e_smx_simcall_t call, Args&&... args)
+{
+  smx_process_t self = SIMIX_process_self();
+  marshal(&self->simcall, call, std::forward<Args>(args)...);
+  simcall_call(self);
+  return unmarshal<R>(self->simcall.result);
+}
+
 }
 }