OpenMPI  0.1.1
routed.h File Reference

Routing table for the RML. More...

#include "orte_config.h"
#include "orte/types.h"
#include "opal/mca/mca.h"
#include "opal/dss/dss_types.h"
#include "opal/mca/crs/crs.h"
#include "opal/mca/crs/base/base.h"
#include "orte/mca/routed/routed_types.h"

Go to the source code of this file.

Data Structures

struct  orte_routed_component_2_0_0_t
 routed component interface More...
 
struct  orte_routed_module_t
 routed module interface More...
 

Macros

#define ORTE_ROUTED_BASE_VERSION_2_0_0
 Macro for use in components that are of type routed. More...
 

Typedefs

typedef struct
orte_routed_component_2_0_0_t 
orte_routed_component_t
 Convienence typedef.
 
typedef int(* orte_routed_module_init_fn_t )(void)
 Initialize the routed module. More...
 
typedef int(* orte_routed_module_finalize_fn_t )(void)
 Finalize the routed module. More...
 
typedef int(* orte_routed_module_delete_route_fn_t )(orte_process_name_t *proc)
 
typedef int(* orte_routed_module_update_route_fn_t )(orte_process_name_t *target, orte_process_name_t *route)
 Update route table with new information. More...
 
typedef orte_process_name_t(* orte_routed_module_get_route_fn_t )(orte_process_name_t *target)
 Get the next hop towards the target. More...
 
typedef int(* orte_routed_module_init_routes_fn_t )(orte_jobid_t job, opal_buffer_t *ndat)
 Initialize the routing table. More...
 
typedef int(* orte_routed_module_route_lost_fn_t )(const orte_process_name_t *route)
 Report a route as "lost". More...
 
typedef bool(* orte_routed_module_route_is_defined_fn_t )(const orte_process_name_t *target)
 
typedef int(* orte_routed_module_get_wireup_info_fn_t )(opal_buffer_t *buf)
 Get wireup data for daemons. More...
 
typedef int(* orte_routed_module_update_routing_tree_fn_t )(orte_jobid_t jobid)
 
typedef orte_vpid_t(* orte_routed_module_get_routing_tree_fn_t )(opal_list_t *children)
 
typedef int(* orte_routed_module_set_lifeline_fn_t )(orte_process_name_t *proc)
 
typedef size_t(* orte_routed_module_num_routes_fn_t )(void)
 
typedef int(* orte_routed_module_ft_event_fn_t )(int state)
 Handle fault tolerance updates. More...
 
typedef struct orte_routed_module_t orte_routed_module_t
 Convenience typedef.
 

Variables

ORTE_DECLSPEC orte_routed_module_t orte_routed
 Interface for routed communication.
 

Detailed Description

Routing table for the RML.

A flexible routing infrastructure for the RML. Provides "next hop" service. Only deals with orte_process_name_ts.

Macro Definition Documentation

#define ORTE_ROUTED_BASE_VERSION_2_0_0
Value:
MCA_BASE_VERSION_2_0_0, \
"routed", 2, 0, 0

Macro for use in components that are of type routed.

Typedef Documentation

typedef int(* orte_routed_module_finalize_fn_t)(void)

Finalize the routed module.

Finalize the routed module, ending cleaning up all resources associated with the module. After the finalize function is called, all interface functions (and the module structure itself) are not available for use.

Note
Whether or not the finalize function returns successfully, the module should not be used once this function is called.
Return values
ORTE_SUCCESSSuccess
ORTE_ERRORAn unspecified error occurred
typedef int(* orte_routed_module_ft_event_fn_t)(int state)

Handle fault tolerance updates.

Parameters
[in]stateFault tolerance state update
Return values
ORTE_SUCCESSThe operation completed successfully
ORTE_ERRORAn unspecifed error occurred
typedef orte_process_name_t(* orte_routed_module_get_route_fn_t)(orte_process_name_t *target)

Get the next hop towards the target.

Obtain the next process on the route to the target. ORTE's routing system works one hop at-a-time, so this function doesn't return the entire path to the target - it only returns the next hop. This could be the target itself, or it could be an intermediate relay. By design, we -never- use application procs as relays, so any relay will be an orted.

typedef int(* orte_routed_module_get_wireup_info_fn_t)(opal_buffer_t *buf)

Get wireup data for daemons.

Add whatever routing data this module requires to allow inter-process messaging.

typedef int(* orte_routed_module_init_fn_t)(void)

Initialize the routed module.

Do whatever needs to be done to initialize the selected module

Return values
ORTE_SUCCESSSuccess
ORTE_ERRORError code from whatever was encountered
typedef int(* orte_routed_module_init_routes_fn_t)(orte_jobid_t job, opal_buffer_t *ndat)

Initialize the routing table.

Initialize the routing table for the specified job. This can be rather complex and depends entirely upon both the selected module AND whether the function is being called by the HNP, an orted, a tool, or an application proc. To understand what is happening, you really need to look at the specific module.

Regardless, at the end of the function, the routes to any other process in the specified job -must- be defined (even if it is direct)

typedef int(* orte_routed_module_route_lost_fn_t)(const orte_process_name_t *route)

Report a route as "lost".

Report that an existing connection has been lost, therefore potentially "breaking" a route in the routing table. It is critical that broken connections be reported so that the selected routing module has the option of dealing with it. This could consist of nothing more than removing that route from the routing table, or could - in the case of a "lifeline" connection - result in abort of the process.

typedef int(* orte_routed_module_update_route_fn_t)(orte_process_name_t *target, orte_process_name_t *route)

Update route table with new information.

Update routing table with a new entry. If an existing exact match for the entry exists, it will be replaced with the current information. If the entry is new, it will be inserted behind all entries of similar "mask". So a wildcard cellid entry will be inserted after any fully-specified entries and any other wildcard cellid entries, but before any wildcard cellid and jobid entries.

Return values
ORTE_SUCCESSSuccess
ORTE_ERR_NOT_SUPPORTEDThe updated is not supported. This is likely due to using partially-specified names with a component that does not support such functionality
ORTE_ERRORAn unspecified error occurred