XBT_PUBLIC(int) MSG_process_self_PPID(void);
XBT_PUBLIC(m_process_t) MSG_process_self(void);
XBT_PUBLIC(xbt_dynar_t) MSG_processes_as_dynar(void);
+XBT_PUBLIC(MSG_error_t) MSG_process_set_kill_time(m_process_t process, double kill_time);
/*property handlers*/
XBT_PUBLIC(xbt_dict_t) MSG_process_get_properties(m_process_t process);
XBT_PUBLIC(const char *) simcall_process_get_name(smx_process_t process);
XBT_PUBLIC(int) simcall_process_is_suspended(smx_process_t process);
XBT_PUBLIC(xbt_dict_t) simcall_process_get_properties(smx_process_t host);
+XBT_PUBLIC(void) simcall_process_set_kill_time(smx_process_t process, double kill_time);
/* Sleep control */
XBT_PUBLIC(e_smx_state_t) simcall_process_sleep(double duration);
return SIMIX_processes_as_dynar();
}
+/** \ingroup m_process_management
+ * \brief Set the kill time of a process.
+ *
+ * \param process a process
+ * \param kill_time a double
+ */
+MSG_error_t MSG_process_set_kill_time(m_process_t process, double kill_time)
+{
+ xbt_assert(process != NULL, "Invalid parameter");
+
+ simcall_process_set_kill_time(process,kill_time);
+ return MSG_OK;
+}
+
/** \ingroup m_process_management
* \brief Returns the process ID of \a process.
*
}
}
+/** \ingroup m_process_management
+ * \brief Set the kill time of a process.
+ *
+ * \param process a process
+ * \param kill_time a double
+ */
+void simcall_process_set_kill_time(smx_process_t process, double kill_time)
+{
+
+ if (kill_time > SIMIX_get_clock()) {
+ if (simix_global->kill_process_function) {
+ XBT_DEBUG("Set kill time %f for process %s(%s)",kill_time, process->name,
+ process->smx_host->name);
+ SIMIX_timer_set(kill_time, simix_global->kill_process_function, process);
+ }
+ }
+}
+
/**
* \brief Return the location on which an agent is running.
*