#include "mc/mc.h"
+#include "src/kernel/context/Context.hpp"
#include "src/simix/smx_private.h"
-void SIMIX_process_set_cleanup_function(
- smx_process_t process, void_pfn_smxprocess_t cleanup)
-{
- process->context->set_cleanup(cleanup);
-}
-
/**
* @brief creates a new context for a user level process
* @param code a main function
void_pfn_smxprocess_t cleanup_func,
smx_process_t simix_process)
{
- if (!simix_global)
- xbt_die("simix is not initialized, please call MSG_init first");
+ xbt_assert(simix_global, "simix is not initialized, please call MSG_init first");
return simix_global->context_factory->create_context(
std::move(code), cleanup_func, simix_process);
}
namespace simgrid {
-namespace simix {
+namespace kernel {
+namespace context {
ContextFactoryInitializer factory_initializer = nullptr;
{
}
+}}}
+
+/** @brief Executes all the processes to run (in parallel if possible). */
+void SIMIX_context_runall(void)
+{
+ simix_global->context_factory->run_all();
}
+
+/** @brief returns the current running context */
+smx_context_t SIMIX_context_self(void)
+{
+ if (simix_global && simix_global->context_factory)
+ return simix_global->context_factory->self();
+ else
+ return nullptr;
}
+