root/ompi/mca/mtl/psm/mtl_psm_recv.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. ompi_mtl_psm_irecv
  2. ompi_mtl_psm_imrecv

   1 /*
   2  * Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana
   3  *                         University Research and Technology
   4  *                         Corporation.  All rights reserved.
   5  * Copyright (c) 2004-2005 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-2006 The Regents of the University of California.
  11  *                         All rights reserved.
  12  * Copyright (c) 2006      QLogic Corporation. All rights reserved.
  13  * $COPYRIGHT$
  14  *
  15  * Additional copyrights may follow
  16  *
  17  * $HEADER$
  18  */
  19 
  20 
  21 #include "ompi_config.h"
  22 #include "ompi/communicator/communicator.h"
  23 #include "opal/datatype/opal_convertor.h"
  24 #include "ompi/mca/mtl/base/mtl_base_datatype.h"
  25 #include "opal/util/show_help.h"
  26 
  27 #include "mtl_psm.h"
  28 #include "mtl_psm_types.h"
  29 #include "mtl_psm_request.h"
  30 
  31 int
  32 ompi_mtl_psm_irecv(struct mca_mtl_base_module_t* mtl,
  33                   struct ompi_communicator_t *comm,
  34                   int src,
  35                   int tag,
  36                   struct opal_convertor_t *convertor,
  37                   struct mca_mtl_request_t *mtl_request)
  38 {
  39     int ret;
  40     psm_error_t err;
  41     mca_mtl_psm_request_t * mtl_psm_request = (mca_mtl_psm_request_t*) mtl_request;
  42     uint64_t mqtag;
  43     uint64_t tagsel;
  44     size_t length;
  45 
  46     ret = ompi_mtl_datatype_recv_buf(convertor,
  47                                      &mtl_psm_request->buf,
  48                                      &length,
  49                                      &mtl_psm_request->free_after);
  50 
  51     if (OMPI_SUCCESS != ret) return ret;
  52 
  53     if (length >= 1ULL << sizeof(uint32_t) * 8) {
  54             opal_show_help("help-mtl-psm.txt",
  55                    "message too big", false,
  56                    length, 1ULL << sizeof(uint32_t) * 8);
  57             return OMPI_ERROR;
  58     }
  59 
  60     mtl_psm_request->length = length;
  61     mtl_psm_request->convertor = convertor;
  62     mtl_psm_request->type = OMPI_MTL_PSM_IRECV;
  63 
  64     PSM_MAKE_TAGSEL(src, tag, comm->c_contextid, mqtag, tagsel);
  65 
  66 #if 0
  67     printf("recv bits:   0x%016llx 0x%016llx\n", mqtag, tagsel);
  68 #endif
  69     err = psm_mq_irecv(ompi_mtl_psm.mq,
  70                        mqtag,
  71                        tagsel,
  72                        0,
  73                        mtl_psm_request->buf,
  74                        length,
  75                        mtl_psm_request,
  76                        &mtl_psm_request->psm_request);
  77 
  78     if (err) {
  79       opal_show_help("help-mtl-psm.txt",
  80                      "error posting receive", true,
  81                      psm_error_get_string(err),
  82                      mtl_psm_request->buf, length);
  83       return OMPI_ERROR;
  84     }
  85 
  86     return OMPI_SUCCESS;
  87 }
  88 
  89 
  90 int
  91 ompi_mtl_psm_imrecv(struct mca_mtl_base_module_t* mtl,
  92                     struct opal_convertor_t *convertor,
  93                     struct ompi_message_t **message,
  94                     struct mca_mtl_request_t *mtl_request)
  95 {
  96     return OMPI_ERR_NOT_IMPLEMENTED;
  97 }

/* [<][>][^][v][top][bottom][index][help] */