+double Exec::get_remaining_ratio() const
+{
+ if (is_parallel())
+ return kernel::actor::simcall(
+ [this]() { return boost::static_pointer_cast<kernel::activity::ExecImpl>(pimpl_)->get_par_remaining_ratio(); });
+ else
+ return kernel::actor::simcall(
+ [this]() { return boost::static_pointer_cast<kernel::activity::ExecImpl>(pimpl_)->get_seq_remaining_ratio(); });
+}
+
+} // namespace s4u
+} // namespace simgrid
+/* **************************** Public C interface *************************** */
+void sg_exec_set_bound(sg_exec_t exec, double bound)
+{
+ exec->set_bound(bound);
+}
+
+const char* sg_exec_get_name(const_sg_exec_t exec)
+{
+ return exec->get_cname();
+}
+
+void sg_exec_set_name(sg_exec_t exec, const char* name)
+{
+ exec->set_name(name);
+}
+
+void sg_exec_set_host(sg_exec_t exec, sg_host_t new_host)
+{
+ exec->set_host(new_host);
+}
+
+double sg_exec_get_remaining(const_sg_exec_t exec)
+{
+ return exec->get_remaining();
+}
+
+double sg_exec_get_remaining_ratio(const_sg_exec_t exec)
+{
+ return exec->get_remaining_ratio();
+}
+
+void sg_exec_start(sg_exec_t exec)
+{
+ exec->vetoable_start();
+}
+
+void sg_exec_cancel(sg_exec_t exec)
+{
+ exec->cancel();
+ exec->unref();
+}
+
+int sg_exec_test(sg_exec_t exec)