/* */
/* This is somehow the "libc" of SimGrid */
-/* Copyright (c) 2010-2017. The SimGrid Team.
- * All rights reserved. */
+/* Copyright (c) 2010-2017. The SimGrid Team. All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
#include "simgrid/simix/blocking_simcall.hpp"
#include "smx_private.hpp"
#include "src/kernel/activity/CommImpl.hpp"
+#include "src/kernel/activity/MutexImpl.hpp"
#include "src/mc/mc_forward.hpp"
-#include "src/mc/mc_replay.h"
+#include "src/mc/mc_replay.hpp"
#include "src/plugins/vm/VirtualMachineImpl.hpp"
#include "src/simix/smx_host_private.hpp"
#include "xbt/ex.h"
* \param bound
* \return A new SIMIX execution synchronization
*/
-smx_activity_t simcall_execution_start(const char *name,
- double flops_amount,
- double priority, double bound)
+smx_activity_t simcall_execution_start(const char* name, double flops_amount, double priority, double bound,
+ simgrid::s4u::Host* host)
{
/* checking for infinite values */
xbt_assert(std::isfinite(flops_amount), "flops_amount is not finite!");
xbt_assert(std::isfinite(priority), "priority is not finite!");
- return simcall_BODY_execution_start(name, flops_amount, priority, bound);
+ return simcall_BODY_execution_start(name, flops_amount, priority, bound, host);
}
/**
*/
void simcall_execution_cancel(smx_activity_t execution)
{
- simgrid::simix::kernelImmediate([execution] {
- XBT_DEBUG("Cancel synchro %p", execution.get());
- simgrid::kernel::activity::ExecImplPtr exec =
- boost::static_pointer_cast<simgrid::kernel::activity::ExecImpl>(execution);
-
- if (exec->surf_exec)
- exec->surf_exec->cancel();
+ simgrid::kernel::activity::ExecImplPtr exec =
+ boost::static_pointer_cast<simgrid::kernel::activity::ExecImpl>(execution);
+ if (not exec->surfAction_)
+ return;
+ simgrid::simix::kernelImmediate([exec] {
+ XBT_DEBUG("Cancel synchro %p", exec.get());
+ if (exec->surfAction_)
+ exec->surfAction_->cancel();
});
}
simgrid::kernel::activity::ExecImplPtr exec =
boost::static_pointer_cast<simgrid::kernel::activity::ExecImpl>(execution);
- if (exec->surf_exec)
- exec->surf_exec->setSharingWeight(priority);
+ if (exec->surfAction_)
+ exec->surfAction_->setSharingWeight(priority);
});
}
simgrid::simix::kernelImmediate([execution, bound] {
simgrid::kernel::activity::ExecImplPtr exec =
boost::static_pointer_cast<simgrid::kernel::activity::ExecImpl>(execution);
- if (exec->surf_exec)
- static_cast<simgrid::surf::CpuAction*>(exec->surf_exec)->setBound(bound);
+ if (exec->surfAction_)
+ exec->surfAction_->setBound(bound);
});
}
return (e_smx_state_t) simcall_BODY_execution_wait(execution);
}
+e_smx_state_t simcall_execution_test(smx_activity_t execution)
+{
+ return (e_smx_state_t)simcall_BODY_execution_test(execution);
+}
+
/**
* \ingroup simix_process_management
* \brief Kills all SIMIX processes.
fprintf(stderr,"You must run MSG_init before using MSG\n"); // We can't use xbt_die since we may get there before the initialization
xbt_abort();
}
- return simgrid::simix::kernelImmediate([] { return new simgrid::simix::MutexImpl(); });
+ return simgrid::simix::kernelImmediate([] { return new simgrid::kernel::activity::MutexImpl(); });
}
/**
* \ingroup simix_synchro_management
*
*/
-void simcall_cond_wait_timeout(smx_cond_t cond,
- smx_mutex_t mutex,
- double timeout)
+void simcall_cond_wait_timeout(smx_cond_t cond, smx_mutex_t mutex, double timeout)
{
xbt_assert(std::isfinite(timeout), "timeout is not finite!");
simcall_BODY_cond_wait_timeout(cond, mutex, timeout);
simcall_BODY_sem_acquire_timeout(sem, timeout);
}
-/**
- * \ingroup simix_file_management
- *
- */
-sg_size_t simcall_file_read(surf_file_t fd, sg_size_t size)
+sg_size_t simcall_storage_read(surf_storage_t st, sg_size_t size)
{
- return simcall_BODY_file_read(fd, size);
+ return simcall_BODY_storage_read(st, size);
}
-/**
- * \ingroup simix_file_management
- *
- */
-sg_size_t simcall_file_write(surf_file_t fd, sg_size_t size)
+sg_size_t simcall_storage_write(surf_storage_t st, sg_size_t size)
{
- return simcall_BODY_file_write(fd, size);
+ return simcall_BODY_storage_write(st, size);
}
void simcall_run_kernel(std::function<void()> const& code)