OpenMPI  0.1.1
btl_openib_proc.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-2011 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 (c) 2006-2007 Voltaire All rights reserved.
13  * Copyright (c) 2008 Cisco Systems, Inc. All rights reserved.
14  * $COPYRIGHT$
15  *
16  * Additional copyrights may follow
17  *
18  * $HEADER$
19  */
20 
21 #ifndef MCA_BTL_IB_PROC_H
22 #define MCA_BTL_IB_PROC_H
23 
24 #include "opal/class/opal_object.h"
25 #include "ompi/proc/proc.h"
26 #include "btl_openib.h"
27 #include "btl_openib_endpoint.h"
28 
29 BEGIN_C_DECLS
30 
31 /* Must forward reference this to avoid include file loop */
33 
34 /**
35  * Data received from the modex. For each openib BTL module/port in
36  * the peer, we'll receive two things:
37  *
38  * 1. Data about the peer's port
39  * 2. An array of CPCs that the peer has available on that port, each
40  * of which has its own meta data
41  *
42  * Hence, these two items need to be bundled together;
43  */
45  /** Information about the peer's port */
47 
48  /** Array of the peer's CPCs available on this port */
50 
51  /** Length of the pm_cpc_data array */
54 
55 /**
56  * Represents the state of a remote process and the set of addresses
57  * that it exports. Also cache an instance of mca_btl_base_endpoint_t for
58  * each
59  * BTL instance that attempts to open a connection to the process.
60  */
62  /** allow proc to be placed on a list */
64 
65  /** pointer to corresponding ompi_proc_t */
67 
68  /** modex messages from this proc; one for each port in the peer */
70 
71  /** length of proc_ports array */
72  uint8_t proc_port_count;
73 
74  /** array of endpoints that have been created to access this proc */
76 
77  /** number of endpoints (length of proc_endpoints array) */
79 
80  /** lock to protect against concurrent access to proc state */
82 };
84 
86 
87 mca_btl_openib_proc_t* mca_btl_openib_proc_create(ompi_proc_t* ompi_proc);
88 int mca_btl_openib_proc_insert(mca_btl_openib_proc_t*, mca_btl_base_endpoint_t*);
89 int mca_btl_openib_proc_remove(ompi_proc_t* proc,
90  mca_btl_base_endpoint_t* module_endpoint);
91 
92 END_C_DECLS
93 
94 #endif
mca_btl_openib_proc_modex_t * proc_ports
modex messages from this proc; one for each port in the peer
Definition: btl_openib_proc.h:69
opal_mutex_t proc_lock
lock to protect against concurrent access to proc state
Definition: btl_openib_proc.h:81
size_t proc_endpoint_count
number of endpoints (length of proc_endpoints array)
Definition: btl_openib_proc.h:78
Definition: mutex_unix.h:53
uint8_t pm_cpc_data_count
Length of the pm_cpc_data array.
Definition: btl_openib_proc.h:52
uint8_t proc_port_count
length of proc_ports array
Definition: btl_openib_proc.h:72
Process identification structure interface.
Remote Open MPI process structure.
Definition: proc.h:56
Definition: opal_list.h:98
ompi_proc_t * proc_ompi
pointer to corresponding ompi_proc_t
Definition: btl_openib_proc.h:66
Common information for all ports that is sent in the modex message.
Definition: btl_openib.h:309
ompi_btl_openib_connect_base_module_data_t * pm_cpc_data
Array of the peer's CPCs available on this port.
Definition: btl_openib_proc.h:49
struct mca_btl_base_endpoint_t ** proc_endpoints
array of endpoints that have been created to access this proc
Definition: btl_openib_proc.h:75
State of ELAN endpoint connection.
Definition: btl_elan_endpoint.h:33
Meta data about a CPC module.
Definition: connect.h:303
Represents the state of a remote process and the set of addresses that it exports.
Definition: btl_openib_proc.h:61
mca_btl_openib_modex_message_t pm_port_info
Information about the peer's port.
Definition: btl_openib_proc.h:46
A simple C-language object-oriented system with single inheritance and ownership-based memory managem...
opal_list_item_t super
allow proc to be placed on a list
Definition: btl_openib_proc.h:63
Data received from the modex.
Definition: btl_openib_proc.h:44
#define OBJ_CLASS_DECLARATION(NAME)
Declaration for class descriptor.
Definition: opal_object.h:236