From b1a2e45431d13cdf45ec8b1c91bf7d6ca8377c9d Mon Sep 17 00:00:00 2001 From: mquinson Date: Tue, 23 Mar 2010 14:43:36 +0000 Subject: [PATCH] Sanitize the includes of context objects declarations (was dupplicated and a bit too public) git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@7322 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- src/bindings/ruby_bindings.h | 2 + src/simix/private.h | 70 ++++-------------------------- src/simix/smx_context_base.c | 2 +- src/simix/smx_context_java.c | 1 - src/simix/smx_context_java.h | 2 +- src/simix/smx_context_lua.c | 5 +-- src/simix/smx_context_private.h | 75 +++++++++++---------------------- src/simix/smx_context_ruby.c | 2 +- src/simix/smx_context_sysv.c | 2 +- 9 files changed, 40 insertions(+), 121 deletions(-) diff --git a/src/bindings/ruby_bindings.h b/src/bindings/ruby_bindings.h index 77e66372cf..48821a9cba 100644 --- a/src/bindings/ruby_bindings.h +++ b/src/bindings/ruby_bindings.h @@ -26,6 +26,8 @@ #include "xbt/log.h" #include "xbt/asserts.h" +#include "simix/smx_context_private.h" + /* Damn Ruby. They load their full config.h, which breaks since we also load ours. * So, we undef the offending defines */ diff --git a/src/simix/private.h b/src/simix/private.h index 8fb2bc4443..f8012e58c8 100644 --- a/src/simix/private.h +++ b/src/simix/private.h @@ -203,75 +203,16 @@ void __SIMIX_action_display_conditions(smx_action_t action); /******************************** Context *************************************/ -void SIMIX_context_mod_init(void); - -void SIMIX_context_mod_exit(void); - -/* *********************** */ -/* Context type definition */ -/* *********************** */ -/* the following function pointers types describe the interface that all context - concepts must implement */ - -/* each context type derive from this structure, so they must contain this structure - * at their begining -- OOP in C :/ */ -typedef struct s_smx_context { - s_xbt_swag_hookup_t hookup; - xbt_main_func_t code; - int argc; - char **argv; - void_f_pvoid_t cleanup_func; - void *cleanup_arg; -} s_smx_ctx_base_t; -/* methods of this class */ -void smx_ctx_base_factory_init(smx_context_factory_t * factory); -int smx_ctx_base_factory_finalize(smx_context_factory_t * factory); - -smx_context_t -smx_ctx_base_factory_create_context_sized(size_t size, - xbt_main_func_t code, int argc, char** argv, - void_f_pvoid_t cleanup_func, void* cleanup_arg); -void smx_ctx_base_free(smx_context_t context); -void smx_ctx_base_stop(smx_context_t context); - - -/* *********************** */ -/* factory type definition */ -/* *********************** */ - -/* Each context implementation define its own context factory - * A context factory is responsable of the creation and manipulation of the - * execution context of all the simulated processes (and maestro) using the - * selected implementation. - * - * For example, the context switch based on java thread use the - * java implementation of the context and the java factory to build and control - * the contexts depending on this implementation. - - * The following function pointer types describe the interface that any context - * factory should implement. - */ +/* The following function pointer types describe the interface that any context + factory should implement */ -/* function used to create a new context */ -typedef smx_context_t (*smx_pfn_context_factory_create_context_t) +typedef smx_context_t (*smx_pfn_context_factory_create_context_t) (xbt_main_func_t, int, char**, void_f_pvoid_t, void*); - -/* this function finalize the specified context factory */ typedef int (*smx_pfn_context_factory_finalize_t) (smx_context_factory_t*); - -/* function used to destroy the specified context */ typedef void (*smx_pfn_context_free_t) (smx_context_t); - -/* function used to start the specified context */ typedef void (*smx_pfn_context_start_t) (smx_context_t); - -/* function used to stop the current context */ typedef void (*smx_pfn_context_stop_t) (smx_context_t); - -/* function used to suspend the current context */ typedef void (*smx_pfn_context_suspend_t) (smx_context_t context); - -/* function used to resume the current context */ typedef void (*smx_pfn_context_resume_t) (smx_context_t new_context); /* interface of the context factories */ @@ -285,6 +226,11 @@ typedef struct s_smx_context_factory { const char *name; } s_smx_context_factory_t; + +void SIMIX_context_mod_init(void); + +void SIMIX_context_mod_exit(void); + /* Selects a context factory associated with the name specified by the parameter name. * If successful the function returns 0. Otherwise the function returns the error code. */ diff --git a/src/simix/smx_context_base.c b/src/simix/smx_context_base.c index 1cce400d76..a36e83b040 100644 --- a/src/simix/smx_context_base.c +++ b/src/simix/smx_context_base.c @@ -7,7 +7,7 @@ #include "xbt/function_types.h" -#include "private.h" +#include "smx_context_private.h" XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(bindings); diff --git a/src/simix/smx_context_java.c b/src/simix/smx_context_java.c index ef79b31112..16dc2d93a0 100644 --- a/src/simix/smx_context_java.c +++ b/src/simix/smx_context_java.c @@ -7,7 +7,6 @@ #include "xbt/function_types.h" -#include "private.h" #include "smx_context_java.h" XBT_LOG_NEW_DEFAULT_SUBCATEGORY(jmsg, bindings, "MSG for Java(TM)"); diff --git a/src/simix/smx_context_java.h b/src/simix/smx_context_java.h index 5e8e8ab7ab..b43ab358e5 100644 --- a/src/simix/smx_context_java.h +++ b/src/simix/smx_context_java.h @@ -4,7 +4,7 @@ #include "portable.h" #include "xbt/misc.h" -#include "private.h" +#include "smx_context_private.h" #include "java/jmsg.h" #include "java/jmsg_process.h" diff --git a/src/simix/smx_context_lua.c b/src/simix/smx_context_lua.c index e194ffb6d2..377cf1383a 100644 --- a/src/simix/smx_context_lua.c +++ b/src/simix/smx_context_lua.c @@ -7,10 +7,7 @@ /* 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. */ -#include "private.h" -//#include "context_sysv_config.h" /* loads context system definitions */ -//#include "portable.h" -//#include /* context relative declarations */ +#include "smx_context_private.h" #include #include diff --git a/src/simix/smx_context_private.h b/src/simix/smx_context_private.h index bc4b45e636..083c243a67 100644 --- a/src/simix/smx_context_private.h +++ b/src/simix/smx_context_private.h @@ -9,9 +9,8 @@ #ifndef _XBT_CONTEXT_PRIVATE_H #define _XBT_CONTEXT_PRIVATE_H -/*#include "xbt/sysdep.h"*/ -#include "simix/private.h" #include "xbt/swag.h" +#include "simix/private.h" SG_BEGIN_DECL() @@ -20,62 +19,36 @@ SG_BEGIN_DECL() /* *********************** */ /* the following function pointers types describe the interface that all context concepts must implement */ +/* the following function pointers types describe the interface that all context + concepts must implement */ -/* each context type must contain this macro at its begining -- OOP in C :/ */ -#define SMX_CTX_BASE_T \ - s_xbt_swag_hookup_t hookup; \ - ex_ctx_t *exception; \ - xbt_main_func_t code; \ - -/* all other context types derive from this structure */ +/* each context type derive from this structure, so they must contain this structure + * at their begining -- OOP in C :/ */ typedef struct s_smx_context { - SMX_CTX_BASE_T; -} s_smx_context_t; + s_xbt_swag_hookup_t hookup; + xbt_main_func_t code; + int argc; + char **argv; + void_f_pvoid_t cleanup_func; + void *cleanup_arg; +} s_smx_ctx_base_t; +/* methods of this class */ +void smx_ctx_base_factory_init(smx_context_factory_t * factory); +int smx_ctx_base_factory_finalize(smx_context_factory_t * factory); + +smx_context_t +smx_ctx_base_factory_create_context_sized(size_t size, + xbt_main_func_t code, int argc, char** argv, + void_f_pvoid_t cleanup_func, void* cleanup_arg); +void smx_ctx_base_free(smx_context_t context); +void smx_ctx_base_stop(smx_context_t context); + /* *********************** */ /* factory type definition */ /* *********************** */ -/* The following function pointer types describe the interface that any context - factory should implement */ - -/* function used to create a new context */ -typedef int (*smx_pfn_context_factory_create_context_t) (smx_process_t *, xbt_main_func_t); - -/* function used to create the context for the maestro process */ -typedef int (*smx_pfn_context_factory_create_maestro_context_t) (smx_process_t*); - -/* this function finalize the specified context factory */ -typedef int (*smx_pfn_context_factory_finalize_t) (smx_context_factory_t*); -/* function used to destroy the specified context */ -typedef void (*smx_pfn_context_free_t) (smx_process_t); - -/* function used to kill the specified context */ -typedef void (*smx_pfn_context_kill_t) (smx_process_t); - -/* function used to resume the specified context */ -typedef void (*smx_pfn_context_schedule_t) (smx_process_t); - -/* function used to yield the specified context */ -typedef void (*smx_pfn_context_yield_t) (void); - -/* function used to start the specified context */ -typedef void (*smx_pfn_context_start_t) (smx_process_t); - -/* function used to stop the current context */ -typedef void (*smx_pfn_context_stop_t) (int); - -/* interface of the context factories */ -typedef struct s_smx_context_factory { - smx_pfn_context_factory_create_context_t create_context; - smx_pfn_context_factory_finalize_t finalize; - smx_pfn_context_free_t free; - smx_pfn_context_schedule_t schedule; - smx_pfn_context_yield_t yield; - smx_pfn_context_stop_t stop; - const char *name; -} s_smx_context_factory_t; /* Selects a context factory associated with the name specified by the parameter name. * If successful the function returns 0. Otherwise the function returns the error code. @@ -96,3 +69,5 @@ void SIMIX_ctx_java_factory_init(smx_context_factory_t * factory); SG_END_DECL() #endif /* !_XBT_CONTEXT_PRIVATE_H */ + + diff --git a/src/simix/smx_context_ruby.c b/src/simix/smx_context_ruby.c index 2da3977030..f19fbccdff 100644 --- a/src/simix/smx_context_ruby.c +++ b/src/simix/smx_context_ruby.c @@ -5,12 +5,12 @@ /* 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. */ -#include "private.h" #include "xbt/function_types.h" #include "xbt/sysdep.h" #include "xbt/log.h" #include "xbt/asserts.h" +#include "smx_context_private.h" #include "bindings/ruby_bindings.h" XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(ruby); diff --git a/src/simix/smx_context_sysv.c b/src/simix/smx_context_sysv.c index afa54030fe..202d4fae0b 100644 --- a/src/simix/smx_context_sysv.c +++ b/src/simix/smx_context_sysv.c @@ -7,7 +7,7 @@ /* 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. */ -#include "private.h" +#include "smx_context_private.h" #include "context_sysv_config.h" /* loads context system definitions */ #include "portable.h" #include /* context relative declarations */ -- 2.20.1