X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b4852fd3bb330d081de77ad7092fb2f11ee0b7a4..c8b6d6839f2cd40cdb9b86c52c5bdacd2b271166:/include/simgrid/simix.h diff --git a/include/simgrid/simix.h b/include/simgrid/simix.h index 960f5bdbd5..cdb0a2acfd 100644 --- a/include/simgrid/simix.h +++ b/include/simgrid/simix.h @@ -17,11 +17,13 @@ SG_BEGIN_DECL() +/**************************** Scalar Values **********************************/ + +typedef union u_smx_scalar u_smx_scalar_t; /* ******************************** Host ************************************ */ -/** @defgroup m_datatypes_management_details Details on SIMIX datatypes */ /** @brief Host datatype - @ingroup m_datatypes_management + @ingroup simix_host_management A location (or host) is any possible place where a process may run. Thus it is represented as a physical @@ -52,8 +54,17 @@ typedef enum { typedef struct s_smx_timer* smx_timer_t; /* ******************************** Synchro ************************************ */ +/** + * \ingroup simix_synchro_management + */ typedef struct s_smx_mutex *smx_mutex_t; +/** + * \ingroup simix_synchro_management + */ typedef struct s_smx_cond *smx_cond_t; +/** + * \ingroup simix_synchro_management + */ typedef struct s_smx_sem *smx_sem_t; /********************************** File *************************************/ @@ -67,7 +78,7 @@ typedef struct s_smx_action *smx_action_t; /* FIXME: replace by specialized acti /* ****************************** Process *********************************** */ /** @brief Process datatype - @ingroup m_datatypes_management + @ingroup simix_process_management A processt may be defined as a code, with some private data, executing in a location. @@ -101,16 +112,23 @@ typedef void (*smx_creation_func_t) ( /* process */ smx_process_t*, /******************************* Networking ***********************************/ +/** + * \ingroup simix_rdv_management + */ typedef struct s_smx_rvpoint *smx_rdv_t; +XBT_PUBLIC(void*) SIMIX_comm_get_src_data(smx_action_t action); +XBT_PUBLIC(void*) SIMIX_comm_get_dst_data(smx_action_t action); + /******************************** Context *************************************/ typedef struct s_smx_context *smx_context_t; typedef struct s_smx_context_factory *smx_context_factory_t; /* Process creation/destruction callbacks */ typedef void (*void_pfn_smxprocess_t) (smx_process_t); - -/* for function autorestart */ +/* Process kill */ +typedef void (*void_pfn_smxprocess_t_smxprocess_t) (smx_process_t, smx_process_t); +/* for auto-restart function */ typedef void (*void_pfn_smxhost_t) (smx_host_t); /* The following function pointer types describe the interface that any context @@ -146,6 +164,7 @@ typedef void (*smx_ctx_factory_initializer_t)(smx_context_factory_t*); XBT_PUBLIC(smx_ctx_factory_initializer_t) smx_factory_initializer_to_use; extern char* smx_context_factory_name; extern int smx_context_stack_size; +extern int smx_context_stack_size_was_set; #ifdef HAVE_THREAD_LOCAL_STORAGE extern __thread smx_context_t smx_current_context; @@ -203,12 +222,11 @@ XBT_PUBLIC(void) SIMIX_context_set_parallel_mode(e_xbt_parmap_mode_t mode); /********************************** Global ************************************/ /* Initialization and exit */ XBT_PUBLIC(void) SIMIX_global_init(int *argc, char **argv); -XBT_PUBLIC(void) SIMIX_clean(void); XBT_PUBLIC(void) SIMIX_function_register_process_cleanup(void_pfn_smxprocess_t function); XBT_PUBLIC(void) SIMIX_function_register_process_create(smx_creation_func_t function); -XBT_PUBLIC(void) SIMIX_function_register_process_kill(void_pfn_smxprocess_t function); +XBT_PUBLIC(void) SIMIX_function_register_process_kill(void_pfn_smxprocess_t_smxprocess_t function); /* Simulation execution */ XBT_PUBLIC(void) SIMIX_run(void); @@ -228,7 +246,9 @@ XBT_PUBLIC(void) SIMIX_create_environment(const char *file); XBT_PUBLIC(void) SIMIX_function_register(const char *name, xbt_main_func_t code); XBT_PUBLIC(void) SIMIX_function_register_default(xbt_main_func_t code); XBT_PUBLIC(xbt_main_func_t) SIMIX_get_registered_function(const char *name); +XBT_PUBLIC(void) SIMIX_init_application(void); XBT_PUBLIC(void) SIMIX_launch_application(const char *file); + XBT_PUBLIC(void) SIMIX_process_set_function(const char* process_host, const char *process_function, xbt_dynar_t arguments, @@ -236,7 +256,7 @@ XBT_PUBLIC(void) SIMIX_process_set_function(const char* process_host, double process_kill_time); /*********************************** Host *************************************/ -XBT_PUBLIC(xbt_dict_t) SIMIX_host_get_dict(void); +//XBT_PUBLIC(xbt_dict_t) SIMIX_host_get_dict(u_smx_scalar_t *args); XBT_PUBLIC(smx_host_t) SIMIX_host_get_by_name(const char *name); XBT_PUBLIC(smx_host_t) SIMIX_host_self(void); XBT_PUBLIC(const char*) SIMIX_host_self_get_name(void); @@ -341,6 +361,7 @@ XBT_PUBLIC(xbt_dict_t) simcall_process_get_properties(smx_process_t host); XBT_PUBLIC(void) simcall_process_set_kill_time(smx_process_t process, double kill_time); XBT_PUBLIC(void) simcall_process_on_exit(smx_process_t process, int_f_pvoid_t fun, void *data); XBT_PUBLIC(void) simcall_process_auto_restart_set(smx_process_t process, int auto_restart); +XBT_PUBLIC(smx_process_t) simcall_process_restart(smx_process_t process); /* Sleep control */ XBT_PUBLIC(e_smx_state_t) simcall_process_sleep(double duration); @@ -352,6 +373,8 @@ XBT_PUBLIC(void) simcall_rdv_destroy(smx_rdv_t rvp); XBT_PUBLIC(smx_rdv_t) simcall_rdv_get_by_name(const char *name); XBT_PUBLIC(int) simcall_rdv_comm_count_by_host(smx_rdv_t rdv, smx_host_t host); XBT_PUBLIC(smx_action_t) simcall_rdv_get_head(smx_rdv_t rdv); +XBT_PUBLIC(smx_process_t) simcall_rdv_get_receiver(smx_rdv_t rdv); +XBT_PUBLIC(void) simcall_rdv_set_receiver(smx_rdv_t rdv , smx_process_t process); XBT_PUBLIC(xbt_dict_t) SIMIX_get_rdv_points(void); @@ -381,7 +404,8 @@ XBT_PUBLIC(smx_action_t) simcall_comm_irecv(smx_rdv_t rdv, void *dst_buff, void *data); XBT_PUBLIC(void) simcall_comm_destroy(smx_action_t comm); - +XBT_PUBLIC(smx_action_t) simcall_comm_iprobe(smx_rdv_t rdv, int src, int tag, + int (*match_fun)(void *, void *, smx_action_t), void *data); XBT_PUBLIC(void) simcall_comm_cancel(smx_action_t comm); /* FIXME: waitany is going to be a vararg function, and should take a timeout */ @@ -441,6 +465,22 @@ XBT_PUBLIC(size_t) simcall_file_write(const void* ptr, size_t size, size_t nmemb XBT_PUBLIC(smx_file_t) simcall_file_open(const char* storage, const char* path, const char* mode); XBT_PUBLIC(int) simcall_file_close(smx_file_t fp); XBT_PUBLIC(int) simcall_file_stat(smx_file_t fd, s_file_stat_t *buf); +XBT_PUBLIC(int) simcall_file_unlink(smx_file_t fd); +XBT_PUBLIC(xbt_dict_t) simcall_file_ls(const char* mount, const char* path); + +/************************** AS router **********************************/ +XBT_PUBLIC(xbt_dict_t) SIMIX_asr_get_properties(const char *name); +/************************** AS router simcalls ***************************/ +XBT_PUBLIC(xbt_dict_t) simcall_asr_get_properties(const char *name); + +/************************** MC simcalls **********************************/ +XBT_PUBLIC(void *) simcall_mc_snapshot(void); +XBT_PUBLIC(int) simcall_mc_compare_snapshots(void *s1, void *s2); + +/************************** New API simcalls **********************************/ +/* TUTORIAL: New API */ +/******************************************************************************/ +XBT_PUBLIC(int) simcall_new_api_fct(const char* param1, double param2); SG_END_DECL() #endif /* _SIMIX_SIMIX_H */