+ * Makes the current process sleep until \a time seconds have elapsed.
+ *
+ * \param nb_sec a number of second
+ */
+MSG_error_t MSG_process_sleep(double nb_sec)
+{
+ smx_action_t act_sleep;
+ m_process_t proc = MSG_process_self();
+ e_surf_action_state_t state = SURF_ACTION_NOT_IN_THE_SYSTEM;
+ smx_mutex_t mutex;
+ smx_cond_t cond;
+
+ /* create action to sleep */
+ act_sleep =
+ SIMIX_action_sleep(SIMIX_process_get_host(proc->simdata->s_process),
+ nb_sec);
+
+ mutex = SIMIX_mutex_init();
+ SIMIX_mutex_lock(mutex);
+
+ /* create conditional and register action to it */
+ cond = SIMIX_cond_init();
+
+ proc->simdata->waiting_action = act_sleep;
+ SIMIX_register_action_to_condition(act_sleep, cond);
+ do {
+ SIMIX_cond_wait(cond, mutex);
+ state = SIMIX_action_get_state(act_sleep);
+ } while (state == SURF_ACTION_READY || state == SURF_ACTION_RUNNING);
+ proc->simdata->waiting_action = NULL;
+ SIMIX_unregister_action_to_condition(act_sleep, cond);
+ SIMIX_mutex_unlock(mutex);
+
+ /* remove variables */
+ SIMIX_cond_destroy(cond);
+ SIMIX_mutex_destroy(mutex);
+
+ if (SIMIX_action_get_state(act_sleep) == SURF_ACTION_DONE) {
+ if (SIMIX_host_get_state(SIMIX_host_self()) == SURF_RESOURCE_OFF) {
+ SIMIX_action_destroy(act_sleep);
+ MSG_RETURN(MSG_HOST_FAILURE);
+ }
+ } else {
+ SIMIX_action_destroy(act_sleep);
+ MSG_RETURN(MSG_HOST_FAILURE);
+ }
+
+ SIMIX_action_destroy(act_sleep);
+ MSG_RETURN(MSG_OK);
+}
+
+/** \ingroup msg_gos_functions
+ * \brief Return the number of MSG tasks currently running on
+ * the host of the current running process.
+ */
+static int MSG_get_msgload(void)
+{
+ xbt_die("not implemented yet");
+ return 0;
+}
+
+
+
+/** \ingroup msg_gos_functions
+ * \brief Listen on \a channel and waits for receiving a task from \a host.
+ *
+ * It takes three parameters.
+ * \param task a memory location for storing a #m_task_t. It will
+ hold a task when this function will return. Thus \a task should not
+ be equal to \c NULL and \a *task should be equal to \c NULL. If one of
+ those two condition does not hold, there will be a warning message.