From 6d17036094433f0304c29b6f57922cee32b0c67c Mon Sep 17 00:00:00 2001 From: mquinson Date: Tue, 10 Jul 2007 20:36:12 +0000 Subject: [PATCH] Kill the types xbt_context_function_t, smx_process_code_t and m_process_code_t; use a uniq xbt_main_func_t defined in include/src/function_types.h instead. This reduces the amount of supurious casts around, and prevent me from introducing yet another 'gras_process_code_t' alias ;) This symbol was part of the MSG public interface, but I doubt any user ever created a variable of that type (this is a pointer to function) git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@3719 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- include/msg/datatypes.h | 9 --------- include/msg/msg.h | 8 ++++---- include/xbt/function_types.h | 1 + src/gras/Msg/gras_msg_exchange.c | 1 - src/gras/Virtu/sg_emul.c | 4 ++-- src/include/simix/datatypes.h | 9 --------- src/include/simix/simix.h | 9 +++++---- src/include/xbt/context.h | 4 +--- src/java/jxbt_context.c | 2 +- src/msg/deployment.c | 16 ++++++---------- src/msg/m_process.c | 8 ++++---- src/msg/private.h | 4 ++-- src/simix/private.h | 3 ++- src/simix/smx_deployment.c | 12 ++++-------- src/simix/smx_process.c | 2 +- src/xbt/context.c | 2 +- src/xbt/context_private.h | 2 +- 17 files changed, 35 insertions(+), 61 deletions(-) diff --git a/include/msg/datatypes.h b/include/msg/datatypes.h index d6d9afb5a3..e8b5ce161f 100644 --- a/include/msg/datatypes.h +++ b/include/msg/datatypes.h @@ -84,15 +84,6 @@ typedef struct m_process { typedef struct m_process *m_process_t; /** @} */ -/** @brief Agent code - @ingroup m_datatypes_management - The code of an agent is a m_process_code_t, i.e. a function with no arguments - returning no value. - \see m_process_management - @{ */ -typedef int(*m_process_code_t)(int argc,char *argv[]) ; -/** @} */ - /* ********************************* Channel ******************************** */ /** @brief Channel datatype @ingroup m_datatypes_management diff --git a/include/msg/msg.h b/include/msg/msg.h index e593310bdd..16f4e12311 100644 --- a/include/msg/msg.h +++ b/include/msg/msg.h @@ -22,8 +22,8 @@ XBT_PUBLIC(MSG_error_t) MSG_set_channel_number(int number); XBT_PUBLIC(int) MSG_get_channel_number(void); XBT_PUBLIC(MSG_error_t) MSG_main(void); XBT_PUBLIC(MSG_error_t) MSG_clean(void); -XBT_PUBLIC(void) MSG_function_register(const char *name, m_process_code_t code); -XBT_PUBLIC(m_process_code_t) MSG_get_registered_function(const char *name); +XBT_PUBLIC(void) MSG_function_register(const char *name, xbt_main_func_t code); +XBT_PUBLIC(xbt_main_func_t) MSG_get_registered_function(const char *name); XBT_PUBLIC(void) MSG_launch_application(const char *file); XBT_PUBLIC(void) MSG_paje_output(const char *filename); @@ -47,10 +47,10 @@ XBT_PUBLIC(m_host_t *)MSG_get_host_table(void); /************************** Process handling *********************************/ XBT_PUBLIC(m_process_t) MSG_process_create(const char *name, - m_process_code_t code, void *data, + xbt_main_func_t code, void *data, m_host_t host); XBT_PUBLIC(m_process_t) MSG_process_create_with_arguments(const char *name, - m_process_code_t code, void *data, + xbt_main_func_t code, void *data, m_host_t host, int argc, char **argv); XBT_PUBLIC(void) MSG_process_kill(m_process_t process); XBT_PUBLIC(int) MSG_process_killall(int reset_PIDs); diff --git a/include/xbt/function_types.h b/include/xbt/function_types.h index 0994fef1aa..801a69571d 100644 --- a/include/xbt/function_types.h +++ b/include/xbt/function_types.h @@ -26,6 +26,7 @@ SG_BEGIN_DECL() typedef int (int_f_pvoid_pvoid_t) (void*,void*); + typedef int (*xbt_main_func_t)(int argc, char *argv[]); SG_END_DECL() #endif /* XBT_FUNCTION_TYPE_H */ diff --git a/src/gras/Msg/gras_msg_exchange.c b/src/gras/Msg/gras_msg_exchange.c index aef58b49e3..65b30f9eee 100644 --- a/src/gras/Msg/gras_msg_exchange.c +++ b/src/gras/Msg/gras_msg_exchange.c @@ -22,7 +22,6 @@ const char *e_gras_msg_kind_names[e_gras_msg_kind_count]= {"UNKNOWN","ONEWAY","RPC call","RPC answer","RPC error"}; - /** \brief Waits for a message to come in over a given socket. * * @param timeout: How long should we wait for this message. diff --git a/src/gras/Virtu/sg_emul.c b/src/gras/Virtu/sg_emul.c index d4e07795a7..65ac32ff5c 100644 --- a/src/gras/Virtu/sg_emul.c +++ b/src/gras/Virtu/sg_emul.c @@ -175,8 +175,8 @@ return SIMIX_global_init(argc,argv); void gras_create_environment(const char *file) { return SIMIX_create_environment(file); } -void gras_function_register(const char *name, void *code) { -return SIMIX_function_register(name, (smx_process_code_t)code); +void gras_function_register(const char *name, xbt_main_func_t code) { + return SIMIX_function_register(name, code); } void gras_main() { smx_cond_t cond = NULL; diff --git a/src/include/simix/datatypes.h b/src/include/simix/datatypes.h index dfcc5a96a6..93ddc97357 100644 --- a/src/include/simix/datatypes.h +++ b/src/include/simix/datatypes.h @@ -90,14 +90,5 @@ typedef struct s_smx_process { typedef struct s_smx_process *smx_process_t; /** @} */ -/** @brief Agent code - @ingroup m_datatypes_management - The code of an agent is a m_process_code_t, i.e. a function with no arguments - returning no value. - \see m_process_management - @{ */ -typedef int(*smx_process_code_t)(int argc,char *argv[]) ; -/** @} */ - SG_END_DECL() #endif diff --git a/src/include/simix/simix.h b/src/include/simix/simix.h index d7be65110e..4fefabbe8c 100644 --- a/src/include/simix/simix.h +++ b/src/include/simix/simix.h @@ -11,6 +11,7 @@ #include "xbt/misc.h" #include "xbt/fifo.h" +#include "xbt/function_types.h" #include "simix/datatypes.h" #include "surf/surf.h" @@ -21,8 +22,8 @@ SG_BEGIN_DECL() XBT_PUBLIC(void) SIMIX_config(const char *name, va_list pa); XBT_PUBLIC(void) SIMIX_global_init(int *argc, char **argv); XBT_PUBLIC(void) SIMIX_clean(void); -XBT_PUBLIC(void) SIMIX_function_register(const char *name, smx_process_code_t code); -XBT_PUBLIC(smx_process_code_t) SIMIX_get_registered_function(const char *name); +XBT_PUBLIC(void) SIMIX_function_register(const char *name, xbt_main_func_t code); +XBT_PUBLIC(xbt_main_func_t) SIMIX_get_registered_function(const char *name); XBT_PUBLIC(void) SIMIX_launch_application(const char *file); @@ -38,7 +39,7 @@ XBT_PUBLIC(void) __SIMIX_main(void); /* User create and kill process, the function must accept the folling parameters: * const char *name: a name for the object. It is for user-level information and can be NULL - * smx_process_code_t code: is a function describing the behavior of the agent + * xbt_main_func_t code: is a function describing the behavior of the agent * void *data: data a pointer to any data one may want to attach to the new object. * smx_host_t host: the location where the new agent is executed * int argc, char **argv: parameters passed to code @@ -68,7 +69,7 @@ XBT_PUBLIC(int) SIMIX_host_get_state(smx_host_t host); /************************** Process handling *********************************/ XBT_PUBLIC(smx_process_t) SIMIX_process_create(const char *name, - smx_process_code_t code, void *data, + xbt_main_func_t code, void *data, const char * hostname, int argc, char **argv, void * clean_process_function); diff --git a/src/include/xbt/context.h b/src/include/xbt/context.h index a032454367..6a7aa6f39a 100644 --- a/src/include/xbt/context.h +++ b/src/include/xbt/context.h @@ -27,13 +27,11 @@ /** @brief A context */ typedef struct s_xbt_context *xbt_context_t; - /** @brief A context function */ - typedef int(*xbt_context_function_t)(int argc, char *argv[]); /* @}*/ void xbt_context_empty_trash(void); -XBT_PUBLIC(xbt_context_t) xbt_context_new(xbt_context_function_t code, +XBT_PUBLIC(xbt_context_t) xbt_context_new(xbt_main_func_t code, void_f_pvoid_t startup_func, void *startup_arg, void_f_pvoid_t cleanup_func, void *cleanup_arg, int argc, char *argv[]); diff --git a/src/java/jxbt_context.c b/src/java/jxbt_context.c index 4934ce7bab..9ca20d816e 100644 --- a/src/java/jxbt_context.c +++ b/src/java/jxbt_context.c @@ -270,7 +270,7 @@ xbt_context_start(xbt_context_t context) { xbt_context_t -xbt_context_new(xbt_context_function_t code, +xbt_context_new(xbt_main_func_t code, void_f_pvoid_t startup_func, void *startup_arg, void_f_pvoid_t cleanup_func, void *cleanup_arg, int argc, char *argv[]) { diff --git a/src/msg/deployment.c b/src/msg/deployment.c index 516834ee7f..97308f291f 100644 --- a/src/msg/deployment.c +++ b/src/msg/deployment.c @@ -39,32 +39,28 @@ void MSG_launch_application(const char *file) } /** \ingroup msg_easier_life - * \brief Registers a #m_process_code_t code in a global table. + * \brief Registers the main function of an agent in a global table. * * Registers a code function in a global table. * This table is then used by #MSG_launch_application. * \param name the reference name of the function. - * \param code the function + * \param code the function (must have the same prototype than the main function of any C program: int ..(int argc, char *argv[])) */ -void MSG_function_register(const char *name,m_process_code_t code) +void MSG_function_register(const char *name,xbt_main_func_t code) { SIMIX_function_register(name, code); return; } /** \ingroup msg_easier_life - * \brief Registers a #m_process_t code in a global table. + * \brief Retrieves a registered main function * * Registers a code function in a global table. * This table is then used by #MSG_launch_application. * \param name the reference name of the function. */ -m_process_code_t MSG_get_registered_function(const char *name) +xbt_main_func_t MSG_get_registered_function(const char *name) { - m_process_code_t code = NULL; - - code = (m_process_code_t)SIMIX_get_registered_function(name); - - return code; + return SIMIX_get_registered_function(name); } diff --git a/src/msg/m_process.c b/src/msg/m_process.c index b53bb5ad13..586e756134 100644 --- a/src/msg/m_process.c +++ b/src/msg/m_process.c @@ -36,7 +36,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(msg_process, msg, "Logging specific to MSG (proc * \sa MSG_process_create_with_arguments */ m_process_t MSG_process_create(const char *name, - m_process_code_t code, void *data, + xbt_main_func_t code, void *data, m_host_t host) { return MSG_process_create_with_arguments(name, code, data, host, -1, NULL); @@ -85,7 +85,7 @@ void __MSG_process_cleanup(void *arg) m_process_t __MSG_process_create_with_arguments(const char *name, - m_process_code_t code, void *data, + xbt_main_func_t code, void *data, char * hostname, int argc, char **argv) { m_host_t host = MSG_get_host_by_name(hostname); @@ -93,7 +93,7 @@ m_process_t __MSG_process_create_with_arguments(const char *name, } m_process_t MSG_process_create_with_arguments(const char *name, - m_process_code_t code, void *data, + xbt_main_func_t code, void *data, m_host_t host, int argc, char **argv) { simdata_process_t simdata = xbt_new0(s_simdata_process_t,1); @@ -106,7 +106,7 @@ m_process_t MSG_process_create_with_arguments(const char *name, simdata->m_host = host; simdata->argc = argc; simdata->argv = argv; - simdata->s_process = SIMIX_process_create(name, (smx_process_code_t)code, + simdata->s_process = SIMIX_process_create(name, code, (void*)process, host->name, argc, argv, __MSG_process_cleanup ); diff --git a/src/msg/private.h b/src/msg/private.h index 98cd856fe9..459a10b981 100644 --- a/src/msg/private.h +++ b/src/msg/private.h @@ -69,7 +69,7 @@ typedef struct simdata_process { typedef struct process_arg { const char *name; - m_process_code_t code; + xbt_main_func_t code; void *data; m_host_t m_host; int argc; @@ -106,7 +106,7 @@ void __MSG_display_process_status(void); void __MSG_process_cleanup(void *arg); m_process_t __MSG_process_create_with_arguments(const char *name, - m_process_code_t code, void *data, + xbt_main_func_t code, void *data, char * hostname, int argc, char **argv); diff --git a/src/simix/private.h b/src/simix/private.h index 91252f0116..1c7ac7dc58 100644 --- a/src/simix/private.h +++ b/src/simix/private.h @@ -17,6 +17,7 @@ #include "xbt/dict.h" #include "xbt/context.h" #include "xbt/config.h" +#include "xbt/function_types.h" /******************************* Datatypes **********************************/ @@ -58,7 +59,7 @@ typedef struct s_smx_simdata_process { typedef struct s_smx_process_arg { const char *name; - smx_process_code_t code; + xbt_main_func_t code; void *data; char *hostname; int argc; diff --git a/src/simix/smx_deployment.c b/src/simix/smx_deployment.c index 9fa7617140..afdc09d1af 100644 --- a/src/simix/smx_deployment.c +++ b/src/simix/smx_deployment.c @@ -16,7 +16,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_deployment, simix, "Logging specific to SIMIX (deployment)"); static int parse_argc = -1 ; static char **parse_argv = NULL; -static smx_process_code_t parse_code = NULL; +static xbt_main_func_t parse_code = NULL; static char * parse_host = NULL; static double start_time = 0.0; static double kill_time = -1.0; @@ -116,7 +116,7 @@ void SIMIX_launch_application(const char *file) * \param name the reference name of the function. * \param code the function */ -void SIMIX_function_register(const char *name,smx_process_code_t code) +void SIMIX_function_register(const char *name,xbt_main_func_t code) { xbt_assert0(simix_global,"SIMIX_global_init has to be called before SIMIX_function_register."); @@ -131,14 +131,10 @@ void SIMIX_function_register(const char *name,smx_process_code_t code) * \param name the reference name of the function. * \return The #smx_process_t or NULL. */ -smx_process_code_t SIMIX_get_registered_function(const char *name) +xbt_main_func_t SIMIX_get_registered_function(const char *name) { - smx_process_code_t code = NULL; - xbt_assert0(simix_global,"SIMIX_global_init has to be called before SIMIX_get_registered_function."); - code = xbt_dict_get_or_null(simix_global->registered_functions,name); - - return code; + return xbt_dict_get_or_null(simix_global->registered_functions,name); } diff --git a/src/simix/smx_process.c b/src/simix/smx_process.c index efbf7ea0b1..9b9fc843c9 100644 --- a/src/simix/smx_process.c +++ b/src/simix/smx_process.c @@ -50,7 +50,7 @@ void SIMIX_process_cleanup(void *arg) * \return The new corresponding object. */ smx_process_t SIMIX_process_create(const char *name, - smx_process_code_t code, void *data, + xbt_main_func_t code, void *data, const char * hostname, int argc, char **argv, void * clean_process_function) { diff --git a/src/xbt/context.c b/src/xbt/context.c index 25cc9e66e9..d332492c57 100644 --- a/src/xbt/context.c +++ b/src/xbt/context.c @@ -315,7 +315,7 @@ void xbt_context_start(xbt_context_t context) * \param argc first argument of function \a code * \param argv seconde argument of function \a code */ -xbt_context_t xbt_context_new(xbt_context_function_t code, +xbt_context_t xbt_context_new(xbt_main_func_t code, void_f_pvoid_t startup_func, void *startup_arg, void_f_pvoid_t cleanup_func, void *cleanup_arg, int argc, char *argv[]) diff --git a/src/xbt/context_private.h b/src/xbt/context_private.h index 2cf2a2e7b3..85d35e39e1 100644 --- a/src/xbt/context_private.h +++ b/src/xbt/context_private.h @@ -53,7 +53,7 @@ typedef struct s_xbt_context { #endif /* What to run */ - xbt_context_function_t code; /* the scheduled fonction */ + xbt_main_func_t code; /* the scheduled fonction */ int argc; char **argv; -- 2.20.1