root/opal/mca/btl/portals4/btl_portals4_recv.c

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

DEFINITIONS

This source file includes following definitions.
  1. mca_btl_portals4_recv_enable
  2. mca_btl_portals4_recv_disable
  3. mca_btl_portals4_recv_block_init
  4. mca_btl_portals4_recv_block_free

   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-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-2005 The Regents of the University of California.
  11  *                         All rights reserved.
  12  * Copyright (c) 2014      Bull SAS.  All rights reserved.
  13  * $COPYRIGHT$
  14  *
  15  * Additional copyrights may follow
  16  *
  17  * $HEADER$
  18  */
  19 
  20 
  21 #include "opal_config.h"
  22 
  23 #include "opal/constants.h"
  24 
  25 #include "btl_portals4.h"
  26 #include "btl_portals4_recv.h"
  27 #include "btl_portals4_frag.h"
  28 
  29 
  30 OBJ_CLASS_INSTANCE(mca_btl_portals4_recv_block_t,
  31                    opal_list_item_t,
  32                    NULL, NULL);
  33 
  34 int
  35 mca_btl_portals4_recv_enable(mca_btl_portals4_module_t *btl)
  36 {
  37     int i;
  38 
  39     /* create the recv blocks */
  40     for (i = 0 ; i < mca_btl_portals4_component.portals_recv_mds_num ; ++i) {
  41         mca_btl_portals4_recv_block_t *block =
  42             mca_btl_portals4_recv_block_init(btl);
  43         if (NULL == block) {
  44             mca_btl_portals4_recv_disable(btl);
  45             return OPAL_ERROR;
  46         }
  47         opal_list_append(&(btl->portals_recv_blocks),
  48                          (opal_list_item_t*) block);
  49         mca_btl_portals4_activate_block(block);
  50     }
  51     return OPAL_SUCCESS;
  52 }
  53 
  54 int
  55 mca_btl_portals4_recv_disable(mca_btl_portals4_module_t *btl)
  56 {
  57     opal_list_item_t *item;
  58 
  59     if (opal_list_get_size(&btl->portals_recv_blocks) > 0) {
  60         while (NULL !=
  61                (item = opal_list_remove_first(&btl->portals_recv_blocks))) {
  62             mca_btl_portals4_recv_block_t *block =
  63                 (mca_btl_portals4_recv_block_t*) item;
  64             mca_btl_portals4_recv_block_free(block);
  65         }
  66     }
  67 
  68     return OPAL_SUCCESS;
  69 }
  70 
  71 mca_btl_portals4_recv_block_t*
  72 mca_btl_portals4_recv_block_init(mca_btl_portals4_module_t *btl)
  73 {
  74     mca_btl_portals4_recv_block_t *block;
  75 
  76     block = OBJ_NEW(mca_btl_portals4_recv_block_t);
  77     block->btl = btl;
  78     block->length = mca_btl_portals4_component.portals_recv_mds_size;
  79     block->start = malloc(block->length);
  80     if (block->start == NULL) return NULL;
  81 
  82     block->me_h = PTL_INVALID_HANDLE;
  83 
  84     block->full = false;
  85     block->pending = 0;
  86 
  87     return block;
  88 }
  89 
  90 
  91 int
  92 mca_btl_portals4_recv_block_free(mca_btl_portals4_recv_block_t *block)
  93 {
  94     if (NULL != block->start) {
  95         free(block->start);
  96         block->start = NULL;
  97     }
  98     block->length = 0;
  99     block->full = false;
 100 
 101     return OPAL_SUCCESS;
 102 }

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