SIMIX_process_self()->waiting_action = act_sleep;
SIMIX_register_action_to_semaphore(act_sleep, sem);
SIMIX_sem_block_onto(sem);
SIMIX_process_self()->waiting_action = NULL;
SIMIX_unregister_action_to_semaphore(act_sleep, sem);
SIMIX_process_self()->waiting_action = act_sleep;
SIMIX_register_action_to_semaphore(act_sleep, sem);
SIMIX_sem_block_onto(sem);
SIMIX_process_self()->waiting_action = NULL;
SIMIX_unregister_action_to_semaphore(act_sleep, sem);