OpenMPI
0.1.1
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
vprotocol_base_request.h
1
/*
2
* Copyright (c) 2004-2007 The Trustees of the University of Tennessee.
3
* All rights reserved.
4
* $COPYRIGHT$
5
*
6
* Additional copyrights may follow
7
*
8
* $HEADER$
9
*/
10
11
#ifndef __INCLUDE_VPROTOCOL_REQUEST_H_
12
#define __INCLUDE_VPROTOCOL_REQUEST_H_
13
14
#include "ompi_config.h"
15
#include "
ompi/mca/pml/base/pml_base_request.h
"
16
#include "../vprotocol.h"
17
18
BEGIN_C_DECLS
19
20
21
/** Rebuild the PML requests pools to make room for extra space at end of each
22
* request.
23
* The extra data is allocated in each requests so that it can hold instances
24
* of the req_recv_class and req_send_class fields of the
25
* mca_vprotocol_base_module_t. If those fields are NULL the requests are not
26
* recreated.
27
* @return OMPI_SUCCESS or failure status
28
*/
29
OMPI_DECLSPEC
int
mca_vprotocol_base_request_parasite(
void
);
30
31
32
/** Gives the actual address of the protocol specific part of a recv request.
33
* @param req (IN) the address of an ompi_request.
34
* @return address of the custom vprotocol data associated with the request.
35
*/
36
#define VPROTOCOL_RECV_FTREQ(req) \
37
(((uintptr_t) req) + mca_pml_v.host_pml_req_recv_size)
38
39
/** Gives the address of the real request associated with a protocol specific
40
* send request.
41
* @param ftreq (IN) the address of a protocol specific request.
42
* @return address of the associated ompi_request_t.
43
*/
44
#define VPROTOCOL_RECV_REQ(ftreq) \
45
((mca_pml_base_recv_request_t *) \
46
(((uintptr_t) ftreq) - mca_pml_v.host_pml_req_send_size))
47
48
/** Gives the actual address of the protocol specific part of a send request.
49
* @param req (IN) the address of an ompi_request.
50
* @return address of the custom vprotocol data associated with the request.
51
*/
52
#define VPROTOCOL_SEND_FTREQ(req) \
53
(((uintptr_t) req) + mca_pml_v.host_pml_req_send_size)
54
55
/** Gives the address of the real request associated with a protocol specific
56
* send request.
57
* @param ftreq (IN) the address of a protocol specific request.
58
* @return address of the associated ompi_request_t.
59
*/
60
#define VPROTOCOL_SEND_REQ(ftreq) \
61
((mca_pml_base_send_request_t *) \
62
(((uintptr_t) ftreq) - mca_pml_v.host_pml_req_send_size))
63
64
/** Unified macro to get the actual address of the protocol specific part of
65
* an send - or - recv request.
66
* @param request (IN) the address of an ompi_request.
67
* @return address of the custom vprotocol data associated with the request.
68
*/
69
#define VPROTOCOL_FTREQ(req) ( \
70
assert((MCA_PML_REQUEST_SEND == \
71
((mca_pml_base_request_t *) req)->req_type) || \
72
(MCA_PML_REQUEST_RECV == \
73
((mca_pml_base_request_t *) req)->req_type)), \
74
((MCA_PML_REQUEST_SEND == ((mca_pml_base_request_t *) req)->req_type) \
75
? VPROTOCOL_SEND_FTREQ(req) \
76
: VPROTOCOL_RECV_FTREQ(req) \
77
) \
78
)
79
80
END_C_DECLS
81
82
#endif
/* __INCLUDE_VPROTOCOL_REQUEST_H_ */
pml_base_request.h
ompi
mca
vprotocol
base
vprotocol_base_request.h
Generated on Wed Dec 24 2014 12:05:24 for OpenMPI by
1.8.8