/** @brief Process datatype */
typedef struct s_smx_process {
s_xbt_swag_hookup_t process_hookup;
/** @brief Process datatype */
typedef struct s_smx_process {
s_xbt_swag_hookup_t process_hookup;
smx_host_t new_host; /* if not null, the host on which the process must migrate to */
smx_action_t waiting_action; /* the current blocking action if any */
xbt_fifo_t comms; /* the current non-blocking communication actions */
smx_host_t new_host; /* if not null, the host on which the process must migrate to */
smx_action_t waiting_action; /* the current blocking action if any */
xbt_fifo_t comms; /* the current non-blocking communication actions */
s_smx_simcall_t simcall;
void *data; /* kept for compatibility, it should be replaced with moddata */
xbt_dynar_t on_exit; /* list of functions executed when the process dies */
s_smx_simcall_t simcall;
void *data; /* kept for compatibility, it should be replaced with moddata */
xbt_dynar_t on_exit; /* list of functions executed when the process dies */
void SIMIX_process_killall(smx_process_t issuer);
smx_process_t SIMIX_process_create_from_wrapper(smx_process_arg_t args);
void SIMIX_create_maestro_process(void);
void SIMIX_process_killall(smx_process_t issuer);
smx_process_t SIMIX_process_create_from_wrapper(smx_process_arg_t args);
void SIMIX_create_maestro_process(void);
void SIMIX_process_cleanup(smx_process_t arg);
void SIMIX_process_empty_trash(void);
void SIMIX_process_yield(smx_process_t self);
void SIMIX_process_cleanup(smx_process_t arg);
void SIMIX_process_empty_trash(void);
void SIMIX_process_yield(smx_process_t self);
void SIMIX_process_sleep_suspend(smx_action_t action);
void SIMIX_process_sleep_resume(smx_action_t action);
void SIMIX_process_sleep_destroy(smx_action_t action);
void SIMIX_process_sleep_suspend(smx_action_t action);
void SIMIX_process_sleep_resume(smx_action_t action);
void SIMIX_process_sleep_destroy(smx_action_t action);