X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b1a2e45431d13cdf45ec8b1c91bf7d6ca8377c9d..e379b4008b304af4688fe6cb29fbfdaf9e9e6873:/src/simix/private.h diff --git a/src/simix/private.h b/src/simix/private.h index f8012e58c8..6cf1c9a1c9 100644 --- a/src/simix/private.h +++ b/src/simix/private.h @@ -1,7 +1,5 @@ -/* $Id$ */ - -/* Copyright (c) 2007 Arnaud Legrand, Bruno Donnassolo. - All rights reserved. */ +/* Copyright (c) 2007, 2008, 2009, 2010. The SimGrid Team. + * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -17,6 +15,7 @@ #include "xbt/config.h" #include "xbt/function_types.h" #include "xbt/ex_interface.h" +#include "instr/private.h" /******************************** Datatypes ***********************************/ @@ -159,15 +158,17 @@ typedef struct s_smx_comm { void *dst_buff; size_t src_buff_size; size_t *dst_buff_size; + char copied; + void *data; /* User data associated to communication */ } s_smx_comm_t; void SIMIX_network_copy_data(smx_comm_t comm); smx_comm_t SIMIX_communication_new(smx_comm_type_t type); -static inline void SIMIX_communication_use(smx_comm_t comm); -static inline void SIMIX_communication_wait_for_completion(smx_comm_t comm, double timeout); -static inline void SIMIX_rdv_push(smx_rdv_t rdv, smx_comm_t comm); -static inline void SIMIX_rdv_remove(smx_rdv_t rdv, smx_comm_t comm); +static XBT_INLINE void SIMIX_communication_use(smx_comm_t comm); +static XBT_INLINE void SIMIX_communication_wait_for_completion(smx_comm_t comm, double timeout); +static XBT_INLINE void SIMIX_rdv_push(smx_rdv_t rdv, smx_comm_t comm); +static XBT_INLINE void SIMIX_rdv_remove(smx_rdv_t rdv, smx_comm_t comm); /********************************* Action *************************************/ @@ -183,6 +184,10 @@ typedef struct s_smx_action { int refcount; /**< @brief reference counter */ surf_action_t surf_action; /* SURF modeling of computation */ smx_host_t source; +#ifdef HAVE_TRACING + long long int counter; /* simix action unique identifier for instrumentation */ + char *category; /* simix action category for instrumentation */ +#endif } s_smx_action_t; /************************** Configuration support *****************************/ @@ -246,7 +251,6 @@ 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_lua_factory_init(smx_context_factory_t * factory); -void SIMIX_ctx_lua_factory_set_state(void *state); void SIMIX_ctx_java_factory_init(smx_context_factory_t * factory); @@ -280,7 +284,7 @@ void SIMIX_ctx_java_factory_init(smx_context_factory_t * factory); * \param cleanup_func the function to call when the context stops * \param cleanup_arg the argument of the cleanup_func function */ -static inline smx_context_t SIMIX_context_new(xbt_main_func_t code, int argc, +static XBT_INLINE smx_context_t SIMIX_context_new(xbt_main_func_t code, int argc, char** argv, void_f_pvoid_t cleanup_func, void* cleanup_arg) { @@ -294,7 +298,7 @@ static inline smx_context_t SIMIX_context_new(xbt_main_func_t code, int argc, * \param context the context to destroy * Argument must be stopped first -- runs in maestro context */ -static inline void SIMIX_context_free(smx_context_t context) { +static XBT_INLINE void SIMIX_context_free(smx_context_t context) { (*(simix_global->context_factory->free)) (context); } @@ -302,7 +306,7 @@ static inline void SIMIX_context_free(smx_context_t context) { * \brief stops the execution of a context * \param context to stop */ -static inline void SIMIX_context_stop(smx_context_t context) { +static XBT_INLINE void SIMIX_context_stop(smx_context_t context) { (*(simix_global->context_factory->stop)) (context); } @@ -311,7 +315,7 @@ static inline void SIMIX_context_stop(smx_context_t context) { \param old_context the actual context from which is resuming \param new_context the context to resume */ -static inline void SIMIX_context_resume(smx_context_t new_context) +static XBT_INLINE void SIMIX_context_resume(smx_context_t new_context) { (*(simix_global->context_factory->resume)) (new_context); } @@ -321,7 +325,7 @@ static inline void SIMIX_context_resume(smx_context_t new_context) scheduled it \param context the context to be suspended (it must be the running one) */ -static inline void SIMIX_context_suspend(smx_context_t context) +static XBT_INLINE void SIMIX_context_suspend(smx_context_t context) { (*(simix_global->context_factory->suspend)) (context); }