XBT_PUBLIC void simcall_sem_acquire(smx_sem_t sem);
XBT_PUBLIC int simcall_sem_acquire_timeout(smx_sem_t sem, double max_duration);
+SG_END_DECL()
/***************************** Io **************************************/
-XBT_PUBLIC e_smx_state_t simcall_io_wait(smx_activity_t io);
+#ifdef __cplusplus
+XBT_PUBLIC e_smx_state_t simcall_io_wait(const smx_activity_t& io);
+#endif
/************************** MC simcalls **********************************/
+SG_BEGIN_DECL()
XBT_PUBLIC int simcall_mc_random(int min, int max);
+SG_END_DECL()
/***************************** DEPRECATED CALLS ****************************/
+SG_BEGIN_DECL()
XBT_ATTRIB_DEPRECATED_v325("Please use sg_actor_set_kill_time()") XBT_PUBLIC
void simcall_process_set_kill_time(smx_actor_t process, double kill_time);
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_io, simix, "Logging specific to SIMIX (io)");
-void simcall_HANDLER_io_wait(smx_simcall_t simcall, smx_activity_t synchro)
+void simcall_HANDLER_io_wait(smx_simcall_t simcall, simgrid::kernel::activity::IoImpl* synchro)
{
- XBT_DEBUG("Wait for execution of synchro %p, state %d", synchro.get(), (int)synchro->state_);
+ XBT_DEBUG("Wait for execution of synchro %p, state %d", synchro, (int)synchro->state_);
/* Associate this simcall to the synchro */
synchro->simcalls_.push_back(simcall);
/* set surf's synchro */
if (MC_is_active() || MC_record_replay_is_active()) {
synchro->state_ = SIMIX_DONE;
- boost::static_pointer_cast<simgrid::kernel::activity::IoImpl>(synchro)->finish();
+ synchro->finish();
return;
}
/* If the synchro is already finished then perform the error handling */
if (synchro->state_ != SIMIX_RUNNING)
- boost::static_pointer_cast<simgrid::kernel::activity::IoImpl>(synchro)->finish();
+ synchro->finish();
}
namespace simgrid {
return simcall_BODY_sem_acquire_timeout(sem, timeout);
}
-e_smx_state_t simcall_io_wait(smx_activity_t io)
+e_smx_state_t simcall_io_wait(const smx_activity_t& io)
{
- return (e_smx_state_t)simcall_BODY_io_wait(io);
+ return (e_smx_state_t)simcall_BODY_io_wait(static_cast<simgrid::kernel::activity::IoImpl*>(io.get()));
}
void simcall_run_kernel(std::function<void()> const& code)
simgrid::simix::marshal<int>(simcall->result, result);
}
-static inline boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl>
-simcall_io_wait__get__io(smx_simcall_t simcall)
+static inline simgrid::kernel::activity::IoImpl* simcall_io_wait__get__io(smx_simcall_t simcall)
{
- return simgrid::simix::unmarshal<boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl>>(simcall->args[0]);
+ return simgrid::simix::unmarshal<simgrid::kernel::activity::IoImpl*>(simcall->args[0]);
}
-static inline simgrid::kernel::activity::ActivityImpl* simcall_io_wait__getraw__io(smx_simcall_t simcall)
+static inline simgrid::kernel::activity::IoImpl* simcall_io_wait__getraw__io(smx_simcall_t simcall)
{
- return simgrid::simix::unmarshal_raw<simgrid::kernel::activity::ActivityImpl*>(simcall->args[0]);
+ return simgrid::simix::unmarshal_raw<simgrid::kernel::activity::IoImpl*>(simcall->args[0]);
}
-static inline void simcall_io_wait__set__io(smx_simcall_t simcall,
- boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl> arg)
+static inline void simcall_io_wait__set__io(smx_simcall_t simcall, simgrid::kernel::activity::IoImpl* arg)
{
- simgrid::simix::marshal<boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl>>(simcall->args[0], arg);
+ simgrid::simix::marshal<simgrid::kernel::activity::IoImpl*>(simcall->args[0], arg);
}
static inline sg_size_t simcall_io_wait__get__result(smx_simcall_t simcall)
{
XBT_PRIVATE void simcall_HANDLER_cond_wait_timeout(smx_simcall_t simcall, smx_cond_t cond, smx_mutex_t mutex, double timeout);
XBT_PRIVATE void simcall_HANDLER_sem_acquire(smx_simcall_t simcall, smx_sem_t sem);
XBT_PRIVATE void simcall_HANDLER_sem_acquire_timeout(smx_simcall_t simcall, smx_sem_t sem, double timeout);
-XBT_PRIVATE void simcall_HANDLER_io_wait(smx_simcall_t simcall,
- boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl> io);
+XBT_PRIVATE void simcall_HANDLER_io_wait(smx_simcall_t simcall, simgrid::kernel::activity::IoImpl* io);
XBT_PRIVATE int simcall_HANDLER_mc_random(smx_simcall_t simcall, int min, int max);
\ No newline at end of file
return simcall<int, smx_sem_t, double>(SIMCALL_SEM_ACQUIRE_TIMEOUT, sem, timeout);
}
-inline static sg_size_t simcall_BODY_io_wait(boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl> io)
+inline static sg_size_t simcall_BODY_io_wait(simgrid::kernel::activity::IoImpl* io)
{
if (0) /* Go to that function to follow the code flow through the simcall barrier */
simcall_HANDLER_io_wait(&SIMIX_process_self()->simcall, io);
- return simcall<sg_size_t, boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl>>(SIMCALL_IO_WAIT, io);
+ return simcall<sg_size_t, simgrid::kernel::activity::IoImpl*>(SIMCALL_IO_WAIT, io);
}
inline static int simcall_BODY_mc_random(int min, int max)
break;
case SIMCALL_IO_WAIT:
- simcall_HANDLER_io_wait(
- simcall,
- simgrid::simix::unmarshal<boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl>>(simcall->args[0]));
+ simcall_HANDLER_io_wait(simcall, simgrid::simix::unmarshal<simgrid::kernel::activity::IoImpl*>(simcall->args[0]));
break;
case SIMCALL_MC_RANDOM:
void sem_acquire(smx_sem_t sem) [[block]];
int sem_acquire_timeout(smx_sem_t sem, double timeout) [[block]];
-sg_size_t io_wait(boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl> io) [[block]];
+sg_size_t io_wait(simgrid::kernel::activity::IoImpl* io) [[block]];
int mc_random(int min, int max);