1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
|
/*
* Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana
* University Research and Technology
* Corporation. All rights reserved.
* Copyright (c) 2004-2005 The University of Tennessee and The University
* of Tennessee Research Foundation. All rights
* reserved.
* 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 (c) 2010-2012 Sandia National Laboratories. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
#ifndef OMPI_MTL_PORTALS_REQUEST_H
#define OMPI_MTL_PORTALS_REQUEST_H
#include "opal/datatype/opal_convertor.h"
#include "ompi/mca/mtl/mtl.h"
struct ompi_mtl_portals4_message_t;
struct ompi_mtl_portals4_pending_request_t;
typedef enum { portals4_req_isend,
portals4_req_send,
portals4_req_recv,
portals4_req_probe,
portals4_req_recv_short,
portals4_req_flowctl
} ompi_mtl_portals4_request_type_t;
struct ompi_mtl_portals4_base_request_t {
struct mca_mtl_request_t super;
ompi_mtl_portals4_request_type_t type;
int (*event_callback)(ptl_event_t *ev, struct ompi_mtl_portals4_base_request_t*);
};
typedef struct ompi_mtl_portals4_base_request_t ompi_mtl_portals4_base_request_t;
struct ompi_mtl_portals4_isend_request_t {
ompi_mtl_portals4_base_request_t super;
void *buffer_ptr;
ptl_handle_me_t me_h;
uint64_t opcount;
#if OMPI_MTL_PORTALS4_FLOW_CONTROL
struct ompi_mtl_portals4_pending_request_t *pending;
#endif
ptl_size_t length;
int32_t pending_get;
uint32_t event_count;
};
typedef struct ompi_mtl_portals4_isend_request_t ompi_mtl_portals4_isend_request_t;
struct ompi_mtl_portals4_send_request_t {
ompi_mtl_portals4_isend_request_t super;
int retval;
volatile int complete;
};
typedef struct ompi_mtl_portals4_send_request_t ompi_mtl_portals4_send_request_t;
struct ompi_mtl_portals4_recv_request_t {
ompi_mtl_portals4_base_request_t super;
void *buffer_ptr;
ptl_handle_me_t me_h;
struct opal_convertor_t *convertor;
void *delivery_ptr;
size_t delivery_len;
volatile bool req_started;
int32_t pending_reply;
#if OPAL_ENABLE_DEBUG
uint64_t opcount;
ptl_hdr_data_t hdr_data;
#endif
};
typedef struct ompi_mtl_portals4_recv_request_t ompi_mtl_portals4_recv_request_t;
struct ompi_mtl_portals4_recv_short_request_t {
ompi_mtl_portals4_base_request_t super;
struct ompi_mtl_portals4_recv_short_block_t *block;
};
typedef struct ompi_mtl_portals4_recv_short_request_t ompi_mtl_portals4_recv_short_request_t;
struct ompi_mtl_portals4_probe_request_t {
ompi_mtl_portals4_base_request_t super;
volatile int req_complete;
int found_match;
struct ompi_status_public_t status;
struct ompi_mtl_portals4_message_t *message;
};
typedef struct ompi_mtl_portals4_probe_request_t ompi_mtl_portals4_probe_request_t;
struct ompi_mtl_portals4_request_t {
union {
ompi_mtl_portals4_isend_request_t isend;
ompi_mtl_portals4_send_request_t send;
ompi_mtl_portals4_recv_request_t recv;
ompi_mtl_portals4_recv_short_request_t recv_short;
ompi_mtl_portals4_probe_request_t probe;
} u;
};
typedef struct ompi_mtl_portals4_request_t ompi_mtl_portals4_request_t;
#endif
|