I think the volatiles are there to ensure the compiler doesn't optimise away 
reads or function calls which has been a problem with this interface in the 
past.

On 8 Nov 2011, at 22:18, George Bosilca wrote:

> MPIR_Breakpoint, as the name indicates, it is just a breakpoint used by the 
> startup process or the MPI application to signal changes to the debugger. No 
> return value, nothing more than a breakpoint.
> 
> I wonder how the volatile got there, there is no such requirement on 
> variables that cannot be changed during execution.
> 
>  george.
> 
> On Nov 8, 2011, at 08:36 , Jeff Squyres wrote:
> 
>> I think the only possible controversial change in this commit is changing 
>> MPIR_Breakpoint() to return (void) instead of (void*).  Oddly, I see that 
>> MPICH2 has 2 different prototypes for MPIR_Breakpoint -- one returns 
>> (void*), another returns (int).  Assuming that MPICH2 works fine with the 
>> debuggers, this suggests that the return is ignored by the tools -- as it 
>> should be.
>> 
>> I didn't check the volatile removals; I'm assuming that George got them 
>> right. :-)
>> 
>> I'll bet that this change does not cause any problems, but it might be worth 
>> checking with the big 3+1:
>> 
>> - DDT
>> - Totalview
>> - padb
>> - stat
>> 
>> 
>> On Nov 7, 2011, at 8:24 PM, bosi...@osl.iu.edu wrote:
>> 
>>> Author: bosilca
>>> Date: 2011-11-07 20:24:16 EST (Mon, 07 Nov 2011)
>>> New Revision: 25456
>>> URL: https://svn.open-mpi.org/trac/ompi/changeset/25456
>>> 
>>> Log:
>>> Put the interface of our MPIR support in sync with the document accepted by 
>>> the MPI
>>> Forum (http://www.mpi-forum.org/docs/mpir-specification-10-11-2010.pdf).
>>> 
>>> Text files modified: 
>>> trunk/ompi/debuggers/debuggers.h                  |    28 
>>> ++++++++++++++--------------            
>>> trunk/orte/mca/debugger/base/base.h               |    10 +++++-----        
>>>                       
>>> trunk/orte/mca/debugger/base/debugger_base_fns.c  |     6 +++---            
>>>                       
>>> trunk/orte/mca/debugger/base/debugger_base_open.c |     6 +++---            
>>>                       
>>> 4 files changed, 25 insertions(+), 25 deletions(-)
>>> 
>>> Modified: trunk/ompi/debuggers/debuggers.h
>>> ==============================================================================
>>> --- trunk/ompi/debuggers/debuggers.h        (original)
>>> +++ trunk/ompi/debuggers/debuggers.h        2011-11-07 20:24:16 EST (Mon, 
>>> 07 Nov 2011)
>>> @@ -31,20 +31,20 @@
>>> 
>>> BEGIN_C_DECLS
>>> 
>>> -    /**
>>> -     * Wait for a debugger if asked.
>>> -     */
>>> -    extern void ompi_wait_for_debugger(void);
>>> -
>>> -    /**
>>> -     * Notify a debugger that we're about to abort
>>> -     */
>>> -    extern void ompi_debugger_notify_abort(char *string);
>>> -
>>> -    /**
>>> -     * Breakpoint function for parallel debuggers.
>>> -     */
>>> -    ORTE_DECLSPEC extern void *MPIR_Breakpoint(void);
>>> +/**
>>> + * Wait for a debugger if asked.
>>> + */
>>> +extern void ompi_wait_for_debugger(void);
>>> +
>>> +/**
>>> + * Notify a debugger that we're about to abort
>>> + */
>>> +extern void ompi_debugger_notify_abort(char *string);
>>> +
>>> +/**
>>> + * Breakpoint function for parallel debuggers.
>>> + */
>>> +ORTE_DECLSPEC extern void MPIR_Breakpoint(void);
>>> 
>>> END_C_DECLS
>>> 
>>> 
>>> Modified: trunk/orte/mca/debugger/base/base.h
>>> ==============================================================================
>>> --- trunk/orte/mca/debugger/base/base.h     (original)
>>> +++ trunk/orte/mca/debugger/base/base.h     2011-11-07 20:24:16 EST (Mon, 
>>> 07 Nov 2011)
>>> @@ -61,18 +61,18 @@
>>> ORTE_DECLSPEC extern int MPIR_proctable_size;
>>> ORTE_DECLSPEC extern volatile int MPIR_being_debugged;
>>> ORTE_DECLSPEC extern volatile int MPIR_debug_state;
>>> -ORTE_DECLSPEC extern volatile int MPIR_i_am_starter;
>>> +ORTE_DECLSPEC extern int MPIR_i_am_starter;
>>> ORTE_DECLSPEC extern int MPIR_partial_attach_ok;
>>> -ORTE_DECLSPEC extern volatile char 
>>> MPIR_executable_path[MPIR_MAX_PATH_LENGTH];
>>> -ORTE_DECLSPEC extern volatile char 
>>> MPIR_server_arguments[MPIR_MAX_ARG_LENGTH];
>>> +ORTE_DECLSPEC extern char MPIR_executable_path[MPIR_MAX_PATH_LENGTH];
>>> +ORTE_DECLSPEC extern char MPIR_server_arguments[MPIR_MAX_ARG_LENGTH];
>>> ORTE_DECLSPEC extern volatile int MPIR_forward_output;
>>> ORTE_DECLSPEC extern volatile int MPIR_forward_comm;
>>> ORTE_DECLSPEC extern char MPIR_attach_fifo[MPIR_MAX_PATH_LENGTH];
>>> ORTE_DECLSPEC extern int MPIR_force_to_main;
>>> 
>>> -typedef void* (*orte_debugger_breakpoint_fn_t)(void);
>>> +typedef void (*orte_debugger_breakpoint_fn_t)(void);
>>> 
>>> -ORTE_DECLSPEC void* MPIR_Breakpoint(void);
>>> +ORTE_DECLSPEC void MPIR_Breakpoint(void);
>>> 
>>> /* --- end MPICH/TotalView std debugger interface definitions */
>>> 
>>> 
>>> Modified: trunk/orte/mca/debugger/base/debugger_base_fns.c
>>> ==============================================================================
>>> --- trunk/orte/mca/debugger/base/debugger_base_fns.c        (original)
>>> +++ trunk/orte/mca/debugger/base/debugger_base_fns.c        2011-11-07 
>>> 20:24:16 EST (Mon, 07 Nov 2011)
>>> @@ -168,7 +168,7 @@
>>>        */
>>>       ORTE_PROGRESSED_WAIT(false, jdata->num_reported, jdata->num_procs);
>>> 
>>> -        (void) MPIR_Breakpoint();
>>> +        MPIR_Breakpoint();
>>> 
>>>       /* send a message to rank=0 to release it */
>>>       OBJ_CONSTRUCT(&buf, opal_buffer_t); /* don't need anything in this */
>>> @@ -186,7 +186,7 @@
>>> /*
>>> * Breakpoint function for parallel debuggers
>>> */
>>> -void *MPIR_Breakpoint(void)
>>> +void MPIR_Breakpoint(void)
>>> {
>>> -    return NULL;
>>> +    return;
>>> }
>>> 
>>> Modified: trunk/orte/mca/debugger/base/debugger_base_open.c
>>> ==============================================================================
>>> --- trunk/orte/mca/debugger/base/debugger_base_open.c       (original)
>>> +++ trunk/orte/mca/debugger/base/debugger_base_open.c       2011-11-07 
>>> 20:24:16 EST (Mon, 07 Nov 2011)
>>> @@ -43,10 +43,10 @@
>>> int MPIR_proctable_size = 0;
>>> volatile int MPIR_being_debugged = 0;
>>> volatile int MPIR_debug_state = 0;
>>> -volatile int MPIR_i_am_starter = 0;
>>> +int MPIR_i_am_starter = 0;
>>> int MPIR_partial_attach_ok = 1;
>>> -volatile char MPIR_executable_path[MPIR_MAX_PATH_LENGTH];
>>> -volatile char MPIR_server_arguments[MPIR_MAX_ARG_LENGTH];
>>> +char MPIR_executable_path[MPIR_MAX_PATH_LENGTH];
>>> +char MPIR_server_arguments[MPIR_MAX_ARG_LENGTH];
>>> volatile int MPIR_forward_output = 0;
>>> volatile int MPIR_forward_comm = 0;
>>> char MPIR_attach_fifo[MPIR_MAX_PATH_LENGTH];
>>> _______________________________________________
>>> svn-full mailing list
>>> svn-f...@open-mpi.org
>>> http://www.open-mpi.org/mailman/listinfo.cgi/svn-full
>> 
>> 
>> -- 
>> Jeff Squyres
>> jsquy...@cisco.com
>> For corporate legal information go to:
>> http://www.cisco.com/web/about/doing_business/legal/cri/
>> 
>> 
>> _______________________________________________
>> devel mailing list
>> de...@open-mpi.org
>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
> 
> 
> _______________________________________________
> devel mailing list
> de...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/devel


Reply via email to