OpenMPI
0.1.1
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
osc_pt2pt_header.h
1
/*
2
* Copyright (c) 2004-2005 The Trustees of Indiana University.
3
* All rights reserved.
4
* Copyright (c) 2004-2005 The Trustees of the University of Tennessee.
5
* All rights reserved.
6
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
7
* University of Stuttgart. All rights reserved.
8
* Copyright (c) 2004-2005 The Regents of the University of California.
9
* All rights reserved.
10
* Copyright (c) 2006-2007 Los Alamos National Security, LLC. All rights
11
* reserved.
12
* Copyright (c) 2010 Cisco Systems, Inc. All rights reserved.
13
* $COPYRIGHT$
14
*
15
* Additional copyrights may follow
16
*
17
* $HEADER$
18
*/
19
20
#ifndef OMPI_MCA_OSC_PT2PT_HDR_H
21
#define OMPI_MCA_OSC_PT2PT_HDR_H
22
23
#ifdef HAVE_NETINET_IN_H
24
#include <netinet/in.h>
25
#endif
26
27
#include "opal/types.h"
28
29
#define OMPI_OSC_PT2PT_HDR_PUT 0x0001
30
#define OMPI_OSC_PT2PT_HDR_ACC 0x0002
31
#define OMPI_OSC_PT2PT_HDR_GET 0x0003
32
#define OMPI_OSC_PT2PT_HDR_REPLY 0x0004
33
#define OMPI_OSC_PT2PT_HDR_POST 0x0005
34
#define OMPI_OSC_PT2PT_HDR_COMPLETE 0x0006
35
#define OMPI_OSC_PT2PT_HDR_LOCK_REQ 0x0007
36
#define OMPI_OSC_PT2PT_HDR_UNLOCK_REQ 0x0008
37
#define OMPI_OSC_PT2PT_HDR_UNLOCK_REPLY 0x0009
38
39
#define OMPI_OSC_PT2PT_HDR_FLAG_NBO 0x0001
40
41
struct
ompi_osc_pt2pt_base_header_t
{
42
uint8_t hdr_type;
43
uint8_t hdr_flags;
44
#if OPAL_ENABLE_HETEROGENEOUS_SUPPORT
45
uint8_t padding[2];
46
#endif
47
};
48
typedef
struct
ompi_osc_pt2pt_base_header_t
ompi_osc_pt2pt_base_header_t
;
49
50
#define OMPI_OSC_PT2PT_BASE_HDR_NTOH(h)
51
#define OMPI_OSC_PT2PT_BASE_HDR_HTON(h)
52
53
struct
ompi_osc_pt2pt_send_header_t
{
54
ompi_osc_pt2pt_base_header_t
hdr_base;
55
56
int32_t hdr_origin;
57
ompi_ptr_t
hdr_origin_sendreq;
58
int32_t hdr_origin_tag;
59
60
uint64_t hdr_target_disp;
61
int32_t hdr_target_count;
62
int32_t hdr_target_op;
63
64
int32_t hdr_msg_length;
/* 0 if payload is not included */
65
};
66
typedef
struct
ompi_osc_pt2pt_send_header_t
ompi_osc_pt2pt_send_header_t
;
67
68
#define OMPI_OSC_PT2PT_SEND_HDR_HTON(hdr) \
69
do { \
70
OMPI_OSC_PT2PT_BASE_HDR_HTON((hdr).hdr_base) \
71
(hdr).hdr_origin = htonl((hdr).hdr_origin); \
72
(hdr).hdr_origin_tag = htonl((hdr).hdr_origin_tag); \
73
(hdr).hdr_target_disp = hton64((hdr).hdr_target_disp); \
74
(hdr).hdr_target_count = htonl((hdr).hdr_target_count); \
75
(hdr).hdr_target_op = htonl((hdr).hdr_target_op); \
76
(hdr).hdr_msg_length = htonl((hdr).hdr_msg_length); \
77
} while (0)
78
79
#define OMPI_OSC_PT2PT_SEND_HDR_NTOH(hdr) \
80
do { \
81
OMPI_OSC_PT2PT_BASE_HDR_NTOH((hdr).hdr_base) \
82
(hdr).hdr_origin = ntohl((hdr).hdr_origin); \
83
(hdr).hdr_origin_tag = ntohl((hdr).hdr_origin_tag); \
84
(hdr).hdr_target_disp = ntoh64((hdr).hdr_target_disp); \
85
(hdr).hdr_target_count = ntohl((hdr).hdr_target_count); \
86
(hdr).hdr_target_op = ntohl((hdr).hdr_target_op); \
87
(hdr).hdr_msg_length = ntohl((hdr).hdr_msg_length); \
88
} while (0)
89
90
91
struct
ompi_osc_pt2pt_reply_header_t
{
92
ompi_osc_pt2pt_base_header_t
hdr_base;
93
int32_t hdr_target_tag;
94
ompi_ptr_t
hdr_origin_sendreq;
95
int32_t hdr_msg_length;
96
};
97
typedef
struct
ompi_osc_pt2pt_reply_header_t
ompi_osc_pt2pt_reply_header_t
;
98
99
#define OMPI_OSC_PT2PT_REPLY_HDR_HTON(hdr) \
100
do { \
101
OMPI_OSC_PT2PT_BASE_HDR_HTON((hdr).hdr_base) \
102
(hdr).hdr_target_tag = htonl((hdr).hdr_target_tag); \
103
(hdr).hdr_msg_length = htonl((hdr).hdr_msg_length); \
104
} while (0)
105
106
#define OMPI_OSC_PT2PT_REPLY_HDR_NTOH(hdr) \
107
do { \
108
OMPI_OSC_PT2PT_BASE_HDR_NTOH((hdr).hdr_base) \
109
(hdr).hdr_target_tag = ntohl((hdr).hdr_target_tag); \
110
(hdr).hdr_msg_length = ntohl((hdr).hdr_msg_length); \
111
} while (0)
112
113
114
struct
ompi_osc_pt2pt_control_header_t
{
115
ompi_osc_pt2pt_base_header_t
hdr_base;
116
int32_t hdr_value[2];
117
};
118
typedef
struct
ompi_osc_pt2pt_control_header_t
ompi_osc_pt2pt_control_header_t
;
119
120
#define OMPI_OSC_PT2PT_CONTROL_HDR_HTON(hdr) \
121
do { \
122
OMPI_OSC_PT2PT_BASE_HDR_HTON((hdr).hdr_base) \
123
(hdr).hdr_value[0] = htonl((hdr).hdr_value[0]); \
124
(hdr).hdr_value[1] = htonl((hdr).hdr_value[1]); \
125
} while (0)
126
127
#define OMPI_OSC_PT2PT_CONTROL_HDR_NTOH(hdr) \
128
do { \
129
OMPI_OSC_PT2PT_BASE_HDR_NTOH((hdr).hdr_base) \
130
(hdr).hdr_value[0] = ntohl((hdr).hdr_value[0]); \
131
(hdr).hdr_value[1] = ntohl((hdr).hdr_value[1]); \
132
} while (0)
133
134
#endif
/* OMPI_MCA_OSC_PT2PT_HDR_H */
ompi_osc_pt2pt_send_header_t
Definition:
osc_pt2pt_header.h:53
ompi_osc_pt2pt_reply_header_t
Definition:
osc_pt2pt_header.h:91
ompi_osc_pt2pt_base_header_t
Definition:
osc_pt2pt_header.h:41
ompi_ptr_t
Definition:
types.h:52
ompi_osc_pt2pt_control_header_t
Definition:
osc_pt2pt_header.h:114
ompi
mca
osc
pt2pt
osc_pt2pt_header.h
Generated on Wed Dec 24 2014 12:05:23 for OpenMPI by
1.8.8