OpenMPI  0.1.1
btl_mx_endpoint.h
1 /*
2  * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
3  * University Research and Technology
4  * Corporation. All rights reserved.
5  * Copyright (c) 2004-2008 The University of Tennessee and The University
6  * of Tennessee Research Foundation. All rights
7  * reserved.
8  * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
9  * University of Stuttgart. All rights reserved.
10  * Copyright (c) 2004-2005 The Regents of the University of California.
11  * All rights reserved.
12  * $COPYRIGHT$
13  *
14  * Additional copyrights may follow
15  *
16  * $HEADER$
17  */
18 
19 #ifndef MCA_BTL_MX_ENDPOINT_H
20 #define MCA_BTL_MX_ENDPOINT_H
21 
22 #include "opal/class/opal_list.h"
23 #include "opal/mca/event/event.h"
24 #include "btl_mx_frag.h"
25 #include "btl_mx.h"
26 
27 #include <myriexpress.h>
28 
29 BEGIN_C_DECLS
30 
31 #define MCA_BTL_MX_NOT_CONNECTED 0x0000
32 #define MCA_BTL_MX_NOT_REACHEABLE 0x0001
33 #define MCA_BTL_MX_CONNECTION_PENDING 0x0002
34 #define MCA_BTL_MX_CONNECTED 0x0004
35 
36 /**
37  * Structure used to publish MX information to peers
38  */
40  uint64_t nic_id;
41  uint32_t endpoint_id;
42  uint32_t unique_network_id; /* Unique identifier for each MX network */
43 };
45 
46 #define BTL_MX_ADDR_HTON(h) \
47  do { \
48  h.nic_id = hton64(h.nic_id); \
49  h.endpoint_id = htonl(h.endpoint_id); \
50  h.unique_network_id = htonl(h.unique_network_id); \
51  } while (0)
52 
53 #define BTL_MX_ADDR_NTOH(h) \
54  do { \
55  h.nic_id = ntoh64(h.nic_id); \
56  h.endpoint_id = ntohl(h.endpoint_id); \
57  h.unique_network_id = ntohl(h.unique_network_id); \
58  } while (0)
59 
60 
61 /**
62  * An abstraction that represents a connection to a endpoint process.
63  * An instance of mca_btl_base_endpoint_t is associated w/ each process
64  * and BTL pair at startup. However, connections to the endpoint
65  * are established dynamically on an as-needed basis:
66  */
67 
69  opal_list_item_t super;
70 
72  /**< BTL instance that created this connection */
73 
75  /**< proc structure corresponding to endpoint */
76 
77  struct mca_btl_mx_addr_t* mx_peer;
78  /** the address as reported by the peer */
79 
80  mx_endpoint_addr_t mx_peer_addr;
81  /** the remote MX endpoint address */
82 
83  int status; /**< status of the endpoint */
84 };
85 
88 
90 
91 END_C_DECLS
92 #endif
mx_endpoint_addr_t mx_peer_addr
the address as reported by the peer
Definition: btl_mx_endpoint.h:80
The opal_list_t interface is used to provide a generic doubly-linked list container for Open MPI...
Macros to help interaction between hwloc and Myrinet Express.
Structure used to publish MX information to peers.
Definition: btl_mx_endpoint.h:39
Definition: opal_list.h:98
int status
the remote MX endpoint address
Definition: btl_mx_endpoint.h:83
State of ELAN endpoint connection.
Definition: btl_elan_endpoint.h:33
BTL Module Interface.
Definition: btl_mx.h:115
struct mca_btl_mx_proc_t * endpoint_proc
proc structure corresponding to endpoint
Definition: btl_mx_endpoint.h:74
struct mca_btl_mx_module_t * endpoint_btl
BTL instance that created this connection.
Definition: btl_mx_endpoint.h:71
#define OBJ_CLASS_DECLARATION(NAME)
Declaration for class descriptor.
Definition: opal_object.h:236
Represents the state of a remote process and the set of addresses that it exports.
Definition: btl_mx_proc.h:34