2005-07-27 23:46:36 +04:00
|
|
|
/*
|
2005-11-05 22:57:48 +03:00
|
|
|
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
|
|
|
* University Research and Technology
|
|
|
|
* Corporation. All rights reserved.
|
2008-10-23 00:12:30 +04:00
|
|
|
* Copyright (c) 2004-2008 The University of Tennessee and The University
|
2005-11-05 22:57:48 +03:00
|
|
|
* of Tennessee Research Foundation. All rights
|
|
|
|
* reserved.
|
2005-07-27 23:46:36 +04:00
|
|
|
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
|
|
|
* University of Stuttgart. All rights reserved.
|
|
|
|
* Copyright (c) 2004-2005 The Regents of the University of California.
|
|
|
|
* All rights reserved.
|
|
|
|
* $COPYRIGHT$
|
|
|
|
*
|
|
|
|
* Additional copyrights may follow
|
|
|
|
*
|
|
|
|
* $HEADER$
|
|
|
|
*/
|
|
|
|
|
2005-09-05 02:08:13 +04:00
|
|
|
#ifndef MCA_BTL_MX_ENDPOINT_H
|
|
|
|
#define MCA_BTL_MX_ENDPOINT_H
|
2005-07-27 23:46:36 +04:00
|
|
|
|
|
|
|
#include "opal/class/opal_list.h"
|
|
|
|
#include "opal/event/event.h"
|
2006-02-12 04:33:29 +03:00
|
|
|
#include "ompi/mca/pml/pml.h"
|
|
|
|
#include "ompi/mca/btl/btl.h"
|
2005-07-28 23:53:27 +04:00
|
|
|
#include "btl_mx_frag.h"
|
|
|
|
#include "btl_mx.h"
|
2005-09-05 02:08:13 +04:00
|
|
|
|
|
|
|
#include <myriexpress.h>
|
|
|
|
|
2005-07-27 23:46:36 +04:00
|
|
|
#if defined(c_plusplus) || defined(__cplusplus)
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
2006-12-28 06:35:41 +03:00
|
|
|
#define MCA_BTL_MX_NOT_CONNECTED 0x0000
|
|
|
|
#define MCA_BTL_MX_NOT_REACHEABLE 0x0001
|
|
|
|
#define MCA_BTL_MX_CONNECTION_PENDING 0x0002
|
|
|
|
#define MCA_BTL_MX_CONNECTED 0x0004
|
2006-12-25 01:34:48 +03:00
|
|
|
|
2005-09-05 02:08:13 +04:00
|
|
|
/**
|
|
|
|
* Structure used to publish MX information to peers
|
|
|
|
*/
|
|
|
|
struct mca_btl_mx_addr_t {
|
|
|
|
uint64_t nic_id;
|
|
|
|
uint32_t endpoint_id;
|
2007-06-07 01:42:11 +04:00
|
|
|
uint32_t unique_network_id; /* Unique identifier for each MX network */
|
2005-09-05 02:08:13 +04:00
|
|
|
};
|
|
|
|
typedef struct mca_btl_mx_addr_t mca_btl_mx_addr_t;
|
|
|
|
|
2007-06-07 01:42:11 +04:00
|
|
|
#define BTL_MX_ADDR_HTON(h) \
|
|
|
|
do { \
|
|
|
|
h.nic_id = hton64(h.nic_id); \
|
|
|
|
h.endpoint_id = htonl(h.endpoint_id); \
|
|
|
|
h.unique_network_id = htonl(h.unique_network_id); \
|
|
|
|
} while (0)
|
|
|
|
|
|
|
|
#define BTL_MX_ADDR_NTOH(h) \
|
|
|
|
do { \
|
|
|
|
h.nic_id = ntoh64(h.nic_id); \
|
|
|
|
h.endpoint_id = ntohl(h.endpoint_id); \
|
|
|
|
h.unique_network_id = ntohl(h.unique_network_id); \
|
|
|
|
} while (0)
|
2007-01-12 18:44:58 +03:00
|
|
|
|
|
|
|
|
2005-07-27 23:46:36 +04:00
|
|
|
/**
|
|
|
|
* An abstraction that represents a connection to a endpoint process.
|
|
|
|
* An instance of mca_btl_base_endpoint_t is associated w/ each process
|
|
|
|
* and BTL pair at startup. However, connections to the endpoint
|
|
|
|
* are established dynamically on an as-needed basis:
|
|
|
|
*/
|
|
|
|
|
|
|
|
struct mca_btl_base_endpoint_t {
|
|
|
|
opal_list_item_t super;
|
|
|
|
|
2005-07-28 23:53:27 +04:00
|
|
|
struct mca_btl_mx_module_t* endpoint_btl;
|
2005-07-27 23:46:36 +04:00
|
|
|
/**< BTL instance that created this connection */
|
|
|
|
|
2005-07-28 23:53:27 +04:00
|
|
|
struct mca_btl_mx_proc_t* endpoint_proc;
|
2005-07-27 23:46:36 +04:00
|
|
|
/**< proc structure corresponding to endpoint */
|
2005-09-05 02:08:13 +04:00
|
|
|
|
2008-10-23 00:12:30 +04:00
|
|
|
struct mca_btl_mx_addr_t* mx_peer;
|
2005-09-05 02:08:13 +04:00
|
|
|
/** the address as reported by the peer */
|
|
|
|
|
|
|
|
mx_endpoint_addr_t mx_peer_addr;
|
|
|
|
/** the remote MX endpoint address */
|
2006-12-25 01:34:48 +03:00
|
|
|
|
|
|
|
int status; /**< status of the endpoint */
|
2005-07-27 23:46:36 +04:00
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct mca_btl_base_endpoint_t mca_btl_base_endpoint_t;
|
2005-07-28 23:53:27 +04:00
|
|
|
typedef mca_btl_base_endpoint_t mca_btl_mx_endpoint_t;
|
2005-07-27 23:46:36 +04:00
|
|
|
|
2006-08-24 20:38:08 +04:00
|
|
|
OBJ_CLASS_DECLARATION(mca_btl_mx_endpoint_t);
|
2005-07-27 23:46:36 +04:00
|
|
|
|
|
|
|
#if defined(c_plusplus) || defined(__cplusplus)
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif
|