OpenMPI 0.1.1

- Main Page
- Related Pages
- Modules
- Data Structures
- Files

- File List
- Globals

btl_wv_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-2006 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_wv.h"
27 #include "btl_wv_endpoint.h"
28
29 BEGIN_C_DECLS
30
31 /* Must forward reference this to avoid include file loop */
32 struct ompi_btl_wv_connect_base_module_data_t;
33
34 /**
35 * Data received from the modex. For each wv 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 */
44 typedef struct mca_btl_wv_proc_modex_t {
45 /** Information about the peer's port */
46 mca_btl_wv_modex_message_t pm_port_info;
47
48 /** Array of the peer's CPCs available on this port */
49 ompi_btl_wv_connect_base_module_data_t *pm_cpc_data;
50
51 /** Length of the pm_cpc_data array */
52 uint8_t pm_cpc_data_count;
53 } mca_btl_wv_proc_modex_t;
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 */
61 struct mca_btl_wv_proc_t {
62 /** allow proc to be placed on a list */
63 opal_list_item_t super;
64
65 /** pointer to corresponding ompi_proc_t */
66 ompi_proc_t *proc_ompi;
67
68 /** globally unique identifier for the process */
69 orte_process_name_t proc_guid;
70
71 /** modex messages from this proc; one for each port in the peer */
72 mca_btl_wv_proc_modex_t *proc_ports;
73
74 /** length of proc_ports array */
75 uint8_t proc_port_count;
76
77 /** array of endpoints that have been created to access this proc */
78 struct mca_btl_base_endpoint_t **proc_endpoints;
79
80 /** number of endpoints (length of proc_endpoints array) */
81 size_t proc_endpoint_count;
82
83 /** lock to protect against concurrent access to proc state */
84 opal_mutex_t proc_lock;
85 };
86 typedef struct mca_btl_wv_proc_t mca_btl_wv_proc_t;
87
88 OBJ_CLASS_DECLARATION(mca_btl_wv_proc_t);
89
90 mca_btl_wv_proc_t* mca_btl_wv_proc_create(ompi_proc_t* ompi_proc);
91 int mca_btl_wv_proc_insert(mca_btl_wv_proc_t*, mca_btl_base_endpoint_t*);
92 int mca_btl_wv_proc_remove(ompi_proc_t* proc,
93 mca_btl_base_endpoint_t* module_endpoint);
94
95 END_C_DECLS
96
97 #endif
mca_btl_wv_proc_t
Represents the state of a remote process and the set of addresses that it exports.
Definition: btl_wv_proc.h:61
mca_btl_wv_proc_t::proc_endpoint_count
size_t proc_endpoint_count
number of endpoints (length of proc_endpoints array)
Definition: btl_wv_proc.h:81
mca_btl_wv_proc_modex_t
Data received from the modex.
Definition: btl_wv_proc.h:44
orte_process_name_t
Definition: types.h:146
mca_btl_wv_proc_t::proc_guid
orte_process_name_t proc_guid
globally unique identifier for the process
Definition: btl_wv_proc.h:69
ompi_btl_wv_connect_base_module_data_t
Meta data about a CPC module.
Definition: connect.h:303
mca_btl_wv_proc_t::proc_ports
mca_btl_wv_proc_modex_t * proc_ports
modex messages from this proc; one for each port in the peer
Definition: btl_wv_proc.h:72
opal_mutex_t
Definition: mutex_unix.h:53
proc.h
Process identification structure interface.
ompi_proc_t
Remote Open MPI process structure.
Definition: proc.h:56
opal_list_item_t
Definition: opal_list.h:98
mca_btl_wv_proc_t::proc_lock
opal_mutex_t proc_lock
lock to protect against concurrent access to proc state
Definition: btl_wv_proc.h:84
mca_btl_wv_proc_t::proc_port_count
uint8_t proc_port_count
length of proc_ports array
Definition: btl_wv_proc.h:75
mca_btl_base_endpoint_t
State of ELAN endpoint connection.
Definition: btl_elan_endpoint.h:33
mca_btl_wv_proc_t::super
opal_list_item_t super
allow proc to be placed on a list
Definition: btl_wv_proc.h:63
mca_btl_wv_proc_t::proc_endpoints
struct mca_btl_base_endpoint_t ** proc_endpoints
array of endpoints that have been created to access this proc
Definition: btl_wv_proc.h:78
mca_btl_wv_proc_modex_t::pm_port_info
mca_btl_wv_modex_message_t pm_port_info
Information about the peer's port.
Definition: btl_wv_proc.h:46
mca_btl_wv_proc_t::proc_ompi
ompi_proc_t * proc_ompi
pointer to corresponding ompi_proc_t
Definition: btl_wv_proc.h:66
mca_btl_wv_proc_modex_t::pm_cpc_data_count
uint8_t pm_cpc_data_count
Length of the pm_cpc_data array.
Definition: btl_wv_proc.h:52
mca_btl_wv_proc_modex_t::pm_cpc_data
ompi_btl_wv_connect_base_module_data_t * pm_cpc_data
Array of the peer's CPCs available on this port.
Definition: btl_wv_proc.h:49
opal_object.h
A simple C-language object-oriented system with single inheritance and ownership-based memory managem...
mca_btl_wv_modex_message_t
Common information for all ports that is sent in the modex message.
Definition: btl_wv.h:287
OBJ_CLASS_DECLARATION
#define OBJ_CLASS_DECLARATION(NAME)
Declaration for class descriptor.
Definition: opal_object.h:236