This source file includes following definitions.
- mca_bml_base_register
- mca_bml_base_open
- mca_bml_base_close
   1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 
  13 
  14 
  15 
  16 
  17 
  18 
  19 
  20 
  21 
  22 
  23 
  24 #include "ompi_config.h"
  25 #include <stdio.h>
  26 #ifdef HAVE_UNISTD_H
  27 #include <unistd.h>
  28 #endif  
  29 #include "ompi/mca/bml/base/base.h"
  30 #include "ompi/mca/bml/base/static-components.h"
  31 #include "opal/mca/btl/base/base.h"
  32 #include "opal/mca/base/base.h"
  33 #if OPAL_ENABLE_DEBUG_RELIABILITY
  34 #include "opal/util/alfg.h"
  35 #endif 
  36 
  37 static int mca_bml_base_register(mca_base_register_flag_t flags);
  38 static int mca_bml_base_open(mca_base_open_flag_t flags);
  39 static int mca_bml_base_close(void);
  40 
  41 MCA_BASE_FRAMEWORK_DECLARE(ompi, bml, "BTL Multiplexing Layer", mca_bml_base_register,
  42                            mca_bml_base_open, mca_bml_base_close, mca_bml_base_static_components,
  43                            0);
  44 
  45 #if OPAL_ENABLE_DEBUG_RELIABILITY
  46 int mca_bml_base_error_rate_floor;
  47 int mca_bml_base_error_rate_ceiling;
  48 int mca_bml_base_error_count;
  49 static bool mca_bml_base_srand;
  50 opal_rng_buff_t mca_bml_base_rand_buff;
  51 #endif
  52 
  53 opal_mutex_t mca_bml_lock = OPAL_MUTEX_STATIC_INIT;
  54 
  55 static int mca_bml_base_register(mca_base_register_flag_t flags)
  56 {
  57 #if OPAL_ENABLE_DEBUG_RELIABILITY
  58     do {
  59         int var_id;
  60 
  61         mca_bml_base_error_rate_floor = 0;
  62         var_id = mca_base_var_register("ompi", "bml", "base", "error_rate_floor", NULL,
  63                                        MCA_BASE_VAR_TYPE_INT, NULL, 0, 0,
  64                                        OPAL_INFO_LVL_9,
  65                                        MCA_BASE_VAR_SCOPE_READONLY,
  66                                        &mca_bml_base_error_rate_floor);
  67         (void) mca_base_var_register_synonym(var_id, "ompi", "bml", NULL, "error_rate_floor",
  68                                              MCA_BASE_VAR_SYN_FLAG_DEPRECATED);
  69 
  70         mca_bml_base_error_rate_ceiling = 0;
  71         var_id = mca_base_var_register("ompi", "bml", "base", "error_rate_ceiling", NULL,
  72                                        MCA_BASE_VAR_TYPE_INT, NULL, 0, 0,
  73                                        OPAL_INFO_LVL_9,
  74                                        MCA_BASE_VAR_SCOPE_READONLY,
  75                                        &mca_bml_base_error_rate_ceiling);
  76         (void) mca_base_var_register_synonym(var_id, "ompi", "bml", NULL, "error_rate_ceiling",
  77                                              MCA_BASE_VAR_SYN_FLAG_DEPRECATED);
  78 
  79 
  80         mca_bml_base_srand = true;
  81         var_id = mca_base_var_register("ompi", "bml", "base", "srand", NULL,
  82                                        MCA_BASE_VAR_TYPE_BOOL, NULL, 0, 0,
  83                                        OPAL_INFO_LVL_9,
  84                                        MCA_BASE_VAR_SCOPE_READONLY,
  85                                        &mca_bml_base_srand);
  86         (void) mca_base_var_register_synonym(var_id, "ompi", "bml", NULL, "srand",
  87                                              MCA_BASE_VAR_SYN_FLAG_DEPRECATED);
  88     } while (0);
  89 #endif
  90 
  91     return OMPI_SUCCESS;
  92 }
  93 
  94 static int mca_bml_base_open(mca_base_open_flag_t flags)
  95 {
  96     int ret;
  97 
  98     if(OMPI_SUCCESS !=
  99        (ret = mca_base_framework_components_open(&ompi_bml_base_framework, flags))) {
 100         return ret;
 101     }
 102 
 103 #if OPAL_ENABLE_DEBUG_RELIABILITY
 104     
 105         struct timeval tv;
 106         gettimeofday(&tv, NULL);
 107         opal_srand(&mca_bml_base_rand_buff,(uint32_t)(getpid() * tv.tv_usec));
 108 
 109     
 110     if(mca_bml_base_error_rate_ceiling > 0
 111        && mca_bml_base_error_rate_floor <= mca_bml_base_error_rate_ceiling) {
 112         mca_bml_base_error_count = (int) (((double) mca_bml_base_error_rate_ceiling *
 113                     opal_rand(&mca_bml_base_rand_buff))/(UINT32_MAX+1.0));
 114     }
 115 #endif
 116 
 117     return mca_base_framework_open(&opal_btl_base_framework, 0);
 118 }
 119 
 120 static int mca_bml_base_close( void )
 121 {
 122     int ret;
 123 
 124     
 125     ret = mca_base_framework_components_close(&ompi_bml_base_framework, NULL);
 126     if (OMPI_SUCCESS != ret) {
 127         return ret;
 128     }
 129 
 130     return mca_base_framework_close(&opal_btl_base_framework);
 131 }