SimGrid  3.13
Versatile Simulation of Distributed Systems
libsmx.cpp File Reference
#include <cmath>
#include <functional>
#include "src/mc/mc_replay.h"
#include "smx_private.h"
#include "src/mc/mc_forward.hpp"
#include "xbt/ex.h"
#include "mc/mc.h"
#include "src/simix/smx_host_private.h"
#include "src/simix/smx_private.hpp"
#include <simgrid/simix.hpp>
#include "popping_bodies.cpp"

Functions

 XBT_LOG_EXTERNAL_DEFAULT_CATEGORY (simix)
 
void simcall_call (smx_process_t process)
 
xbt_swag_t simcall_host_get_process_list (sg_host_t host)
 
double simcall_host_get_current_power_peak (sg_host_t host)
 
double simcall_host_get_power_peak_at (sg_host_t host, int pstate_index)
 
void simcall_host_get_params (sg_host_t vm, vm_params_t params)
 
void simcall_host_set_params (sg_host_t vm, vm_params_t params)
 
xbt_dict_t simcall_host_get_mounted_storage_list (sg_host_t host)
 
xbt_dynar_t simcall_host_get_attached_storage_list (sg_host_t host)
 
xbt_dict_t simcall_asr_get_properties (const char *name)
 Returns a dict of the properties assigned to a router or AS. More...
 
smx_synchro_t simcall_execution_start (const char *name, double flops_amount, double priority, double bound, unsigned long affinity_mask)
 Creates a synchro that executes some computation of an host. More...
 
smx_synchro_t simcall_execution_parallel_start (const char *name, int host_nb, sg_host_t *host_list, double *flops_amount, double *bytes_amount, double amount, double rate)
 Creates a synchro that may involve parallel computation on several hosts and communication between them. More...
 
void simcall_execution_destroy (smx_synchro_t execution)
 Destroys an execution synchro. More...
 
void simcall_execution_cancel (smx_synchro_t execution)
 Cancels an execution synchro. More...
 
double simcall_execution_get_remains (smx_synchro_t execution)
 Returns how much of an execution synchro remains to be done. More...
 
e_smx_state_t simcall_execution_get_state (smx_synchro_t execution)
 Returns the state of an execution synchro. More...
 
void simcall_execution_set_priority (smx_synchro_t execution, double priority)
 Changes the priority of an execution synchro. More...
 
void simcall_execution_set_bound (smx_synchro_t execution, double bound)
 Changes the capping (the maximum CPU utilization) of an execution synchro. More...
 
void simcall_execution_set_affinity (smx_synchro_t execution, sg_host_t host, unsigned long mask)
 Changes the CPU affinity of an execution synchro. More...
 
e_smx_state_t simcall_execution_wait (smx_synchro_t execution)
 Waits for the completion of an execution synchro and destroy it. More...
 
voidsimcall_vm_create (const char *name, sg_host_t phys_host)
 Create a VM on the given physical host. More...
 
void simcall_vm_start (sg_host_t vm)
 Start the given VM to the given physical host. More...
 
int simcall_vm_get_state (sg_host_t vm)
 Get the state of the given VM. More...
 
voidsimcall_vm_get_pm (sg_host_t vm)
 Get the name of the physical host on which the given VM runs. More...
 
void simcall_vm_set_bound (sg_host_t vm, double bound)
 
void simcall_vm_set_affinity (sg_host_t vm, sg_host_t pm, unsigned long mask)
 
void simcall_vm_migrate (sg_host_t vm, sg_host_t host)
 Migrate the given VM to the given physical host. More...
 
void simcall_vm_suspend (sg_host_t vm)
 Suspend the given VM. More...
 
void simcall_vm_resume (sg_host_t vm)
 Resume the given VM. More...
 
void simcall_vm_save (sg_host_t vm)
 Save the given VM. More...
 
void simcall_vm_restore (sg_host_t vm)
 Restore the given VM. More...
 
void simcall_vm_shutdown (sg_host_t vm)
 Shutdown the given VM. More...
 
void simcall_vm_destroy (sg_host_t vm)
 Destroy the given VM. More...
 
void simcall_vm_migratefrom_resumeto (sg_host_t vm, sg_host_t src_pm, sg_host_t dst_pm)
 Encompassing simcall to prevent the removal of the src or the dst node at the end of a VM migration The simcall actually invokes the following calls: simcall_vm_set_affinity(vm, src_pm, 0); simcall_vm_migrate(vm, dst_pm); simcall_vm_resume(vm);. More...
 
smx_process_t simcall_process_create (const char *name, xbt_main_func_t code, void *data, const char *hostname, double kill_time, int argc, char **argv, xbt_dict_t properties, int auto_restart)
 Creates and runs a new SIMIX process. More...
 
void simcall_process_kill (smx_process_t process)
 Kills a SIMIX process. More...
 
void simcall_process_killall (int reset_pid)
 Kills all SIMIX processes. More...
 
void simcall_process_cleanup (smx_process_t process)
 Cleans up a SIMIX process. More...
 
void simcall_process_set_host (smx_process_t process, sg_host_t dest)
 Migrates an agent to another location. More...
 
void simcall_process_join (smx_process_t process, double timeout)
 
void simcall_process_suspend (smx_process_t process)
 Suspends a process. More...
 
void simcall_process_resume (smx_process_t process)
 Resumes a suspended process. More...
 
int simcall_process_count (void)
 Returns the amount of SIMIX processes in the system. More...
 
int simcall_process_get_PID (smx_process_t process)
 Return the PID of a smx_process_t. More...
 
int simcall_process_get_PPID (smx_process_t process)
 Return the parent PID of a smx_process_t. More...
 
voidsimcall_process_get_data (smx_process_t process)
 Return the user data of a smx_process_t. More...
 
void simcall_process_set_data (smx_process_t process, void *data)
 Set the user data of a smx_process_t. More...
 
static void kill_process_from_timer (void *arg)
 
void simcall_process_set_kill_time (smx_process_t process, double kill_time)
 Set the kill time of a process. More...
 
double simcall_process_get_kill_time (smx_process_t process)
 Get the kill time of a process (or 0 if unset). More...
 
sg_host_t simcall_process_get_host (smx_process_t process)
 Return the location on which an agent is running. More...
 
const char * simcall_process_get_name (smx_process_t process)
 Return the name of an agent. More...
 
int simcall_process_is_suspended (smx_process_t process)
 Returns true if the process is suspended . More...
 
xbt_dict_t simcall_process_get_properties (smx_process_t process)
 Return the properties. More...
 
void simcall_process_on_exit (smx_process_t process, int_f_pvoid_pvoid_t fun, void *data)
 Add an on_exit function Add an on_exit function which will be executed when the process exits/is killed. More...
 
void simcall_process_auto_restart_set (smx_process_t process, int auto_restart)
 Sets the process to be auto-restarted or not by SIMIX when its host comes back up. More...
 
smx_process_t simcall_process_restart (smx_process_t process)
 Restarts the process, killing it and starting it again from scratch. More...
 
e_smx_state_t simcall_process_sleep (double duration)
 Creates a new sleep SIMIX synchro. More...
 
smx_mailbox_t simcall_mbox_create (const char *name)
 Creates a new rendez-vous point. More...
 
smx_mailbox_t simcall_mbox_get_by_name (const char *name)
 Returns a rendez-vous point knowing its name. More...
 
smx_synchro_t simcall_mbox_get_head (smx_mailbox_t mbox)
 returns the communication at the head of the rendez-vous More...
 
void simcall_mbox_set_receiver (smx_mailbox_t mbox, smx_process_t process)
 
smx_process_t simcall_mbox_get_receiver (smx_mailbox_t mbox)
 
void simcall_comm_send (smx_process_t sender, smx_mailbox_t mbox, double task_size, double rate, void *src_buff, size_t src_buff_size, int(*match_fun)(void *, void *, smx_synchro_t), void(*copy_data_fun)(smx_synchro_t, void *, size_t), void *data, double timeout)
 
smx_synchro_t simcall_comm_isend (smx_process_t sender, smx_mailbox_t mbox, double task_size, double rate, void *src_buff, size_t src_buff_size, int(*match_fun)(void *, void *, smx_synchro_t), void(*clean_fun)(void *), void(*copy_data_fun)(smx_synchro_t, void *, size_t), void *data, int detached)
 
void simcall_comm_recv (smx_process_t receiver, smx_mailbox_t mbox, void *dst_buff, size_t *dst_buff_size, int(*match_fun)(void *, void *, smx_synchro_t), void(*copy_data_fun)(smx_synchro_t, void *, size_t), void *data, double timeout, double rate)
 
smx_synchro_t simcall_comm_irecv (smx_process_t receiver, smx_mailbox_t mbox, void *dst_buff, size_t *dst_buff_size, int(*match_fun)(void *, void *, smx_synchro_t), void(*copy_data_fun)(smx_synchro_t, void *, size_t), void *data, double rate)
 
smx_synchro_t simcall_comm_iprobe (smx_mailbox_t mbox, int type, int src, int tag, int(*match_fun)(void *, void *, smx_synchro_t), void *data)
 
void simcall_comm_cancel (smx_synchro_t comm)
 
unsigned int simcall_comm_waitany (xbt_dynar_t comms)
 
int simcall_comm_testany (xbt_dynar_t comms)
 
void simcall_comm_wait (smx_synchro_t comm, double timeout)
 
void simcall_set_category (smx_synchro_t synchro, const char *category)
 Set the category of an synchro. More...
 
int simcall_comm_test (smx_synchro_t comm)
 
double simcall_comm_get_remains (smx_synchro_t comm)
 
e_smx_state_t simcall_comm_get_state (smx_synchro_t comm)
 
voidsimcall_comm_get_src_data (smx_synchro_t comm)
 
voidsimcall_comm_get_dst_data (smx_synchro_t comm)
 
smx_process_t simcall_comm_get_src_proc (smx_synchro_t comm)
 
smx_process_t simcall_comm_get_dst_proc (smx_synchro_t comm)
 
smx_mutex_t simcall_mutex_init (void)
 
void simcall_mutex_lock (smx_mutex_t mutex)
 
int simcall_mutex_trylock (smx_mutex_t mutex)
 
void simcall_mutex_unlock (smx_mutex_t mutex)
 
smx_cond_t simcall_cond_init (void)
 
void simcall_cond_signal (smx_cond_t cond)
 
void simcall_cond_wait (smx_cond_t cond, smx_mutex_t mutex)
 
void simcall_cond_wait_timeout (smx_cond_t cond, smx_mutex_t mutex, double timeout)
 
void simcall_cond_broadcast (smx_cond_t cond)
 
smx_sem_t simcall_sem_init (int capacity)
 
void simcall_sem_release (smx_sem_t sem)
 
int simcall_sem_would_block (smx_sem_t sem)
 
void simcall_sem_acquire (smx_sem_t sem)
 
void simcall_sem_acquire_timeout (smx_sem_t sem, double timeout)
 
int simcall_sem_get_capacity (smx_sem_t sem)
 
sg_size_t simcall_file_read (smx_file_t fd, sg_size_t size, sg_host_t host)
 
sg_size_t simcall_file_write (smx_file_t fd, sg_size_t size, sg_host_t host)
 
smx_file_t simcall_file_open (const char *fullpath, sg_host_t host)
 
int simcall_file_close (smx_file_t fd, sg_host_t host)
 
int simcall_file_unlink (smx_file_t fd, sg_host_t host)
 
sg_size_t simcall_file_get_size (smx_file_t fd)
 
sg_size_t simcall_file_tell (smx_file_t fd)
 
xbt_dynar_t simcall_file_get_info (smx_file_t fd)
 
int simcall_file_seek (smx_file_t fd, sg_offset_t offset, int origin)
 
int simcall_file_move (smx_file_t fd, const char *fullpath)
 Move a file to another location on the same mount point. More...
 
sg_size_t simcall_storage_get_free_size (smx_storage_t storage)
 Returns the free space size on a given storage element. More...
 
sg_size_t simcall_storage_get_used_size (smx_storage_t storage)
 Returns the used space size on a given storage element. More...
 
xbt_dict_t simcall_storage_get_properties (smx_storage_t storage)
 Returns a dict of the properties assigned to a storage element. More...
 
xbt_dict_t simcall_storage_get_content (smx_storage_t storage)
 Returns a dict containing the content of a storage element. More...
 
void simcall_run_kernel (std::function< void()> const &code)
 
int simcall_mc_random (int min, int max)
 
const char * SIMIX_simcall_name (e_smx_simcall_t kind)
 returns a printable string representing a simcall More...
 

Function Documentation

XBT_LOG_EXTERNAL_DEFAULT_CATEGORY ( simix  )
void simcall_call ( smx_process_t  process)
void simcall_host_get_params ( sg_host_t  vm,
vm_params_t  params 
)
void simcall_host_set_params ( sg_host_t  vm,
vm_params_t  params 
)
xbt_dict_t simcall_host_get_mounted_storage_list ( sg_host_t  host)
xbt_dynar_t simcall_host_get_attached_storage_list ( sg_host_t  host)
void* simcall_vm_create ( const char *  name,
sg_host_t  phys_host 
)

Create a VM on the given physical host.

Parameters
nameVM name
hostPhysical host
Returns
The host object of the VM
void simcall_vm_start ( sg_host_t  vm)

Start the given VM to the given physical host.

Parameters
vmVM
int simcall_vm_get_state ( sg_host_t  vm)

Get the state of the given VM.

Parameters
vmVM
Returns
The state of the VM
void* simcall_vm_get_pm ( sg_host_t  vm)

Get the name of the physical host on which the given VM runs.

Parameters
vmVM
Returns
The name of the physical host
void simcall_vm_set_bound ( sg_host_t  vm,
double  bound 
)
void simcall_vm_set_affinity ( sg_host_t  vm,
sg_host_t  pm,
unsigned long  mask 
)
void simcall_vm_migrate ( sg_host_t  vm,
sg_host_t  host 
)

Migrate the given VM to the given physical host.

Parameters
vmVM
hostDestination physical host
void simcall_vm_suspend ( sg_host_t  vm)

Suspend the given VM.

Parameters
vmVM
void simcall_vm_resume ( sg_host_t  vm)

Resume the given VM.

Parameters
vmVM
void simcall_vm_save ( sg_host_t  vm)

Save the given VM.

Parameters
vmVM
void simcall_vm_restore ( sg_host_t  vm)

Restore the given VM.

Parameters
vmVM
void simcall_vm_shutdown ( sg_host_t  vm)

Shutdown the given VM.

Parameters
vmVM
void simcall_vm_destroy ( sg_host_t  vm)

Destroy the given VM.

Parameters
vmVM
void simcall_vm_migratefrom_resumeto ( sg_host_t  vm,
sg_host_t  src_pm,
sg_host_t  dst_pm 
)

Encompassing simcall to prevent the removal of the src or the dst node at the end of a VM migration The simcall actually invokes the following calls: simcall_vm_set_affinity(vm, src_pm, 0); simcall_vm_migrate(vm, dst_pm); simcall_vm_resume(vm);.

It is called at the end of the migration_rx_fun function from msg/msg_vm.c

Parameters
vmVM to migrate
src_pmSource physical host
dst_pmtDestination physical host
void simcall_process_join ( smx_process_t  process,
double  timeout 
)
static void kill_process_from_timer ( void arg)
static
smx_mailbox_t simcall_mbox_create ( const char *  name)

Creates a new rendez-vous point.

Parameters
nameThe name of the rendez-vous point
Returns
The created rendez-vous point
smx_mailbox_t simcall_mbox_get_by_name ( const char *  name)

Returns a rendez-vous point knowing its name.

smx_synchro_t simcall_mbox_get_head ( smx_mailbox_t  mbox)

returns the communication at the head of the rendez-vous

Parameters
mboxThe rendez-vous point
Returns
The communication or NULL if empty
void simcall_mbox_set_receiver ( smx_mailbox_t  mbox,
smx_process_t  process 
)
smx_process_t simcall_mbox_get_receiver ( smx_mailbox_t  mbox)
void simcall_set_category ( smx_synchro_t  synchro,
const char *  category 
)

Set the category of an synchro.

This functions changes the category only. It calls a surf function.

Parameters
executionThe execution synchro
categoryThe tracing category
sg_size_t simcall_storage_get_free_size ( smx_storage_t  storage)

Returns the free space size on a given storage element.

Parameters
storagea storage
Returns
Return the free space size on a given storage element (as sg_size_t)
sg_size_t simcall_storage_get_used_size ( smx_storage_t  storage)

Returns the used space size on a given storage element.

Parameters
storagea storage
Returns
Return the used space size on a given storage element (as sg_size_t)
xbt_dict_t simcall_storage_get_properties ( smx_storage_t  storage)

Returns a dict of the properties assigned to a storage element.

Parameters
storageA storage element
Returns
The properties of this storage element
xbt_dict_t simcall_storage_get_content ( smx_storage_t  storage)

Returns a dict containing the content of a storage element.

Parameters
storageA storage element
Returns
The content of this storage element as a dict (full path file => size)
void simcall_run_kernel ( std::function< void()> const &  code)
int simcall_mc_random ( int  min,
int  max 
)
const char* SIMIX_simcall_name ( e_smx_simcall_t  kind)

returns a printable string representing a simcall