X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/539916de848562683cf2e5425d5160c2a43f135a..3203ed1f4fb6f4617e94d5351661ba07e8b8f833:/src/simix/smx_private.h diff --git a/src/simix/smx_private.h b/src/simix/smx_private.h index e19601184f..572d474b0a 100644 --- a/src/simix/smx_private.h +++ b/src/simix/smx_private.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2007-2010, 2012-2014. The SimGrid Team. +/* Copyright (c) 2007-2010, 2012-2015. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -9,6 +9,7 @@ #include "simgrid/simix.h" #include "surf/surf.h" +#include "xbt/base.h" #include "xbt/fifo.h" #include "xbt/swag.h" #include "xbt/dict.h" @@ -16,8 +17,8 @@ #include "xbt/config.h" #include "xbt/xbt_os_time.h" #include "xbt/function_types.h" -#include "xbt/ex_interface.h" -#include "instr/instr_private.h" +#include "src/xbt/ex_interface.h" +#include "src/instr/instr_private.h" #include "smx_process_private.h" #include "smx_host_private.h" #include "smx_io_private.h" @@ -25,6 +26,8 @@ #include "popping_private.h" #include "smx_synchro_private.h" +SG_BEGIN_DECL() + /* Define only for SimGrid benchmarking purposes */ //#define TIME_BENCH_PER_SR /* this aims at measuring the time spent in each scheduling round per each thread. The code is thus run in sequential to bench separately each SSR */ //#define TIME_BENCH_AMDAHL /* this aims at measuring the porting of time that could be parallelized at maximum (to get the optimal speedup by applying the amdahl law). */ @@ -32,7 +35,7 @@ //#define TIME_BENCH_ENTIRE_SRS /* more general benchmark than TIME_BENCH_PER_SR. It aims to measure the total time spent in a whole scheduling round (including synchro costs)*/ #ifdef TIME_BENCH_PER_SR -void smx_ctx_raw_new_sr(void); +XBT_PRIVATE void smx_ctx_raw_new_sr(void); #endif /********************************** Simix Global ******************************/ typedef struct s_smx_global { @@ -45,28 +48,23 @@ typedef struct s_smx_global { xbt_dict_t registered_functions; smx_creation_func_t create_process_function; void_pfn_smxprocess_t_smxprocess_t kill_process_function; + /** Callback used when killing a SMX_process */ void_pfn_smxprocess_t cleanup_process_function; xbt_mallocator_t synchro_mallocator; - void_pfn_smxhost_t autorestart; + void_pfn_sghost_t autorestart; #ifdef TIME_BENCH_AMDAHL xbt_os_timer_t timer_seq; /* used to bench the sequential and parallel parts of the simulation, if requested to */ xbt_os_timer_t timer_par; #endif -} s_smx_global_t, *smx_global_t; -extern smx_global_t simix_global; -extern unsigned long simix_process_maxpid; + xbt_os_mutex_t mutex; +} s_smx_global_t, *smx_global_t; -extern xbt_dict_t watched_hosts_lib; +XBT_PUBLIC_DATA(smx_global_t) simix_global; +extern XBT_PRIVATE unsigned long simix_process_maxpid; -#ifdef __cplusplus -extern "C" { -#endif XBT_PUBLIC(void) SIMIX_clean(void); -#ifdef __cplusplus -} -#endif /******************************** Exceptions *********************************/ /** @brief Ask to the provided simix process to raise the provided exception */ @@ -132,7 +130,7 @@ typedef struct s_smx_synchro { union { struct { - smx_host_t host; /* The host where the execution takes place */ + sg_host_t host; /* The host where the execution takes place */ surf_action_t surf_exec; /* The Surf execution action encapsulated */ } execution; /* Possibly parallel execution */ @@ -175,7 +173,7 @@ typedef struct s_smx_synchro { } comm; struct { - smx_host_t host; /* The host that is sleeping */ + sg_host_t host; /* The host that is sleeping */ surf_action_t surf_sleep; /* The Surf sleeping action encapsulated */ } sleep; @@ -184,7 +182,7 @@ typedef struct s_smx_synchro { } synchro; struct { - smx_host_t host; + sg_host_t host; surf_action_t surf_io; } io; }; @@ -193,13 +191,11 @@ typedef struct s_smx_synchro { int latency_limited; #endif -#ifdef HAVE_TRACING char *category; /* simix action category for instrumentation */ -#endif } s_smx_synchro_t; -void SIMIX_context_mod_init(void); -void SIMIX_context_mod_exit(void); +XBT_PRIVATE void SIMIX_context_mod_init(void); +XBT_PRIVATE void SIMIX_context_mod_exit(void); #ifndef WIN32 XBT_PUBLIC_DATA(char sigsegv_stack[SIGSTKSZ]); @@ -215,17 +211,18 @@ XBT_PUBLIC_DATA(char sigsegv_stack[SIGSTKSZ]); # define smx_context_usable_stack_size smx_context_stack_size #endif -void *SIMIX_context_stack_new(void); -void SIMIX_context_stack_delete(void *stack); +XBT_PRIVATE void *SIMIX_context_stack_new(void); +XBT_PRIVATE void SIMIX_context_stack_delete(void *stack); -void SIMIX_context_set_current(smx_context_t context); -smx_context_t SIMIX_context_get_current(void); +XBT_PRIVATE void SIMIX_context_set_current(smx_context_t context); +XBT_PRIVATE smx_context_t SIMIX_context_get_current(void); /* All factories init */ -void SIMIX_ctx_thread_factory_init(smx_context_factory_t *factory); -void SIMIX_ctx_sysv_factory_init(smx_context_factory_t *factory); -void SIMIX_ctx_raw_factory_init(smx_context_factory_t *factory); +XBT_PRIVATE void SIMIX_ctx_thread_factory_init(smx_context_factory_t *factory); +XBT_PRIVATE void SIMIX_ctx_sysv_factory_init(smx_context_factory_t *factory); +XBT_PRIVATE void SIMIX_ctx_raw_factory_init(smx_context_factory_t *factory); +XBT_PRIVATE void SIMIX_ctx_boost_factory_init(smx_context_factory_t *factory); /* ****************************** */ /* context manipulation functions */ @@ -331,6 +328,8 @@ static XBT_INLINE smx_process_t SIMIX_context_get_process(smx_context_t context) XBT_PUBLIC(int) SIMIX_process_get_maxpid(void); -void SIMIX_post_create_environment(void); +XBT_PRIVATE void SIMIX_post_create_environment(void); + +SG_END_DECL() #endif