+#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
+ * \param argc the number of arguments of the main function
+ * \param argv the vector of arguments of the main function
+ * \param cleanup_func the function to call when the context stops
+ */
+smx_context_t SIMIX_context_new(
+ std::function<void()> code,
+ 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");
+ return simix_global->context_factory->create_context(
+ std::move(code), cleanup_func, simix_process);
+}