root/ompi/errhandler/errcode-internal.c

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

DEFINITIONS

This source file includes following definitions.
  1. ompi_errcode_intern_init
  2. ompi_errcode_intern_finalize
  3. ompi_errcode_intern_construct
  4. ompi_errcode_intern_destruct

   1 /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
   2 /*
   3  * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
   4  *                         University Research and Technology
   5  *                         Corporation.  All rights reserved.
   6  * Copyright (c) 2004-2011 The University of Tennessee and The University
   7  *                         of Tennessee Research Foundation.  All rights
   8  *                         reserved.
   9  * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
  10  *                         University of Stuttgart.  All rights reserved.
  11  * Copyright (c) 2004-2005 The Regents of the University of California.
  12  *                         All rights reserved.
  13  * Copyright (c) 2015      Research Organization for Information Science
  14  *                         and Technology (RIST). All rights reserved.
  15  * Copyright (c) 2015      Los Alamos National Security, LLC.  All rights
  16  *                         reseved.
  17  * Copyright (c) 2018      Cisco Systems, Inc.  All rights reserved
  18  * $COPYRIGHT$
  19  *
  20  * Additional copyrights may follow
  21  *
  22  * $HEADER$
  23  */
  24 
  25 #include "ompi_config.h"
  26 
  27 #include <stdio.h>
  28 #include <string.h>
  29 #include "mpi.h"
  30 
  31 #include "opal/util/string_copy.h"
  32 
  33 #include "ompi/errhandler/errcode-internal.h"
  34 
  35 /* Table holding all error codes */
  36 opal_pointer_array_t ompi_errcodes_intern = {{0}};
  37 int ompi_errcode_intern_lastused=0;
  38 
  39 static ompi_errcode_intern_t ompi_success_intern;
  40 static ompi_errcode_intern_t ompi_error_intern;
  41 static ompi_errcode_intern_t ompi_err_out_of_resource_intern;
  42 static ompi_errcode_intern_t ompi_err_temp_out_of_resource_intern;
  43 static ompi_errcode_intern_t ompi_err_resource_busy_intern;
  44 static ompi_errcode_intern_t ompi_err_bad_param_intern;
  45 static ompi_errcode_intern_t ompi_err_fatal_intern;
  46 static ompi_errcode_intern_t ompi_err_not_implemented_intern;
  47 static ompi_errcode_intern_t ompi_err_not_supported_intern;
  48 static ompi_errcode_intern_t ompi_err_interupted_intern;
  49 static ompi_errcode_intern_t ompi_err_would_block_intern;
  50 static ompi_errcode_intern_t ompi_err_in_errno_intern;
  51 static ompi_errcode_intern_t ompi_err_unreach_intern;
  52 static ompi_errcode_intern_t ompi_err_not_found_intern;
  53 static ompi_errcode_intern_t ompi_err_request_intern;
  54 static ompi_errcode_intern_t ompi_err_buffer_intern;
  55 static ompi_errcode_intern_t ompi_err_rma_sync_intern;
  56 static ompi_errcode_intern_t ompi_err_rma_shared_intern;
  57 static ompi_errcode_intern_t ompi_err_rma_attach_intern;
  58 static ompi_errcode_intern_t ompi_err_rma_range_intern;
  59 static ompi_errcode_intern_t ompi_err_rma_conflict_intern;
  60 static ompi_errcode_intern_t ompi_err_win_intern;
  61 static ompi_errcode_intern_t ompi_err_rma_flavor_intern;
  62 
  63 static void ompi_errcode_intern_construct(ompi_errcode_intern_t* errcode);
  64 static void ompi_errcode_intern_destruct(ompi_errcode_intern_t* errcode);
  65 
  66 OBJ_CLASS_INSTANCE(ompi_errcode_intern_t,opal_object_t,ompi_errcode_intern_construct, ompi_errcode_intern_destruct);
  67 
  68 int ompi_errcode_intern_init (void)
  69 {
  70     int pos=0;
  71     /* Initialize the pointer array, which will hold the references to
  72        the error objects */
  73     OBJ_CONSTRUCT(&ompi_errcodes_intern, opal_pointer_array_t);
  74     if( OPAL_SUCCESS != opal_pointer_array_init(&ompi_errcodes_intern,
  75                                                 0, OMPI_FORTRAN_HANDLE_MAX, 64) ) {
  76         return OMPI_ERROR;
  77     }
  78 
  79     /* Initialize now each predefined error code and register
  80        it in the pointer-array. */
  81     OBJ_CONSTRUCT(&ompi_success_intern, ompi_errcode_intern_t);
  82     ompi_success_intern.code = OMPI_SUCCESS;
  83     ompi_success_intern.mpi_code = MPI_SUCCESS;
  84     ompi_success_intern.index = pos++;
  85     opal_string_copy(ompi_success_intern.errstring, "OMPI_SUCCESS",
  86                      OMPI_MAX_ERROR_STRING);
  87     opal_pointer_array_set_item(&ompi_errcodes_intern, ompi_success_intern.index,
  88                                 &ompi_success_intern);
  89 
  90     OBJ_CONSTRUCT(&ompi_error_intern, ompi_errcode_intern_t);
  91     ompi_error_intern.code = OMPI_ERROR;
  92     ompi_error_intern.mpi_code = MPI_ERR_OTHER;
  93     ompi_error_intern.index = pos++;
  94     opal_string_copy(ompi_error_intern.errstring, "OMPI_ERROR",
  95                      OMPI_MAX_ERROR_STRING);
  96     opal_pointer_array_set_item(&ompi_errcodes_intern, ompi_error_intern.index,
  97                                 &ompi_error_intern);
  98 
  99     OBJ_CONSTRUCT(&ompi_err_out_of_resource_intern, ompi_errcode_intern_t);
 100     ompi_err_out_of_resource_intern.code = OMPI_ERR_OUT_OF_RESOURCE;
 101     ompi_err_out_of_resource_intern.mpi_code = MPI_ERR_INTERN;
 102     ompi_err_out_of_resource_intern.index = pos++;
 103     opal_string_copy(ompi_err_out_of_resource_intern.errstring,
 104                      "OMPI_ERR_OUT_OF_RESOURCE", OMPI_MAX_ERROR_STRING);
 105     opal_pointer_array_set_item(&ompi_errcodes_intern, ompi_err_out_of_resource_intern.index,
 106                                 &ompi_err_out_of_resource_intern);
 107 
 108     OBJ_CONSTRUCT(&ompi_err_temp_out_of_resource_intern, ompi_errcode_intern_t);
 109     ompi_err_temp_out_of_resource_intern.code = OMPI_ERR_TEMP_OUT_OF_RESOURCE;
 110     ompi_err_temp_out_of_resource_intern.mpi_code = MPI_ERR_INTERN;
 111     ompi_err_temp_out_of_resource_intern.index = pos++;
 112     opal_string_copy(ompi_err_temp_out_of_resource_intern.errstring,
 113                      "OMPI_ERR_TEMP_OUT_OF_RESOURCE", OMPI_MAX_ERROR_STRING);
 114     opal_pointer_array_set_item(&ompi_errcodes_intern, ompi_err_temp_out_of_resource_intern.index,
 115                                 &ompi_err_temp_out_of_resource_intern);
 116 
 117     OBJ_CONSTRUCT(&ompi_err_resource_busy_intern, ompi_errcode_intern_t);
 118     ompi_err_resource_busy_intern.code = OMPI_ERR_RESOURCE_BUSY;
 119     ompi_err_resource_busy_intern.mpi_code = MPI_ERR_INTERN;
 120     ompi_err_resource_busy_intern.index = pos++;
 121     opal_string_copy(ompi_err_resource_busy_intern.errstring,
 122                      "OMPI_ERR_RESOURCE_BUSY", OMPI_MAX_ERROR_STRING);
 123     opal_pointer_array_set_item(&ompi_errcodes_intern, ompi_err_resource_busy_intern.index,
 124                                 &ompi_err_resource_busy_intern);
 125 
 126     OBJ_CONSTRUCT(&ompi_err_bad_param_intern, ompi_errcode_intern_t);
 127     ompi_err_bad_param_intern.code = OMPI_ERR_BAD_PARAM;
 128     ompi_err_bad_param_intern.mpi_code = MPI_ERR_ARG;
 129     ompi_err_bad_param_intern.index = pos++;
 130     opal_string_copy(ompi_err_bad_param_intern.errstring,
 131                      "OMPI_ERR_BAD_PARAM", OMPI_MAX_ERROR_STRING);
 132     opal_pointer_array_set_item(&ompi_errcodes_intern, ompi_err_bad_param_intern.index,
 133                                 &ompi_err_bad_param_intern);
 134 
 135     OBJ_CONSTRUCT(&ompi_err_fatal_intern, ompi_errcode_intern_t);
 136     ompi_err_fatal_intern.code = OMPI_ERR_FATAL;
 137     ompi_err_fatal_intern.mpi_code = MPI_ERR_INTERN;
 138     ompi_err_fatal_intern.index = pos++;
 139     opal_string_copy(ompi_err_fatal_intern.errstring, "OMPI_ERR_FATAL",
 140                      OMPI_MAX_ERROR_STRING);
 141     opal_pointer_array_set_item(&ompi_errcodes_intern, ompi_err_fatal_intern.index,
 142                                 &ompi_err_fatal_intern);
 143 
 144     OBJ_CONSTRUCT(&ompi_err_not_implemented_intern, ompi_errcode_intern_t);
 145     ompi_err_not_implemented_intern.code = OMPI_ERR_NOT_IMPLEMENTED;
 146     ompi_err_not_implemented_intern.mpi_code = MPI_ERR_INTERN;
 147     ompi_err_not_implemented_intern.index = pos++;
 148     opal_string_copy(ompi_err_not_implemented_intern.errstring,
 149                      "OMPI_ERR_NOT_IMPLEMENTED", OMPI_MAX_ERROR_STRING);
 150     opal_pointer_array_set_item(&ompi_errcodes_intern, ompi_err_not_implemented_intern.index,
 151                                 &ompi_err_not_implemented_intern);
 152 
 153     OBJ_CONSTRUCT(&ompi_err_not_supported_intern, ompi_errcode_intern_t);
 154     ompi_err_not_supported_intern.code = OMPI_ERR_NOT_SUPPORTED;
 155     ompi_err_not_supported_intern.mpi_code = MPI_ERR_INTERN;
 156     ompi_err_not_supported_intern.index = pos++;
 157     opal_string_copy(ompi_err_not_supported_intern.errstring,
 158                      "OMPI_ERR_NOT_SUPPORTED", OMPI_MAX_ERROR_STRING);
 159     opal_pointer_array_set_item(&ompi_errcodes_intern, ompi_err_not_supported_intern.index,
 160                                 &ompi_err_not_supported_intern);
 161 
 162     OBJ_CONSTRUCT(&ompi_err_interupted_intern, ompi_errcode_intern_t);
 163     ompi_err_interupted_intern.code = OMPI_ERR_INTERUPTED;
 164     ompi_err_interupted_intern.mpi_code = MPI_ERR_INTERN;
 165     ompi_err_interupted_intern.index = pos++;
 166     opal_string_copy(ompi_err_interupted_intern.errstring,
 167                      "OMPI_ERR_INTERUPTED", OMPI_MAX_ERROR_STRING);
 168     opal_pointer_array_set_item(&ompi_errcodes_intern, ompi_err_interupted_intern.index,
 169                                 &ompi_err_interupted_intern);
 170 
 171     OBJ_CONSTRUCT(&ompi_err_would_block_intern, ompi_errcode_intern_t);
 172     ompi_err_would_block_intern.code = OMPI_ERR_WOULD_BLOCK;
 173     ompi_err_would_block_intern.mpi_code = MPI_ERR_INTERN;
 174     ompi_err_would_block_intern.index = pos++;
 175     opal_string_copy(ompi_err_would_block_intern.errstring,
 176                      "OMPI_ERR_WOULD_BLOCK", OMPI_MAX_ERROR_STRING);
 177     opal_pointer_array_set_item(&ompi_errcodes_intern, ompi_err_would_block_intern.index,
 178                                 &ompi_err_would_block_intern);
 179 
 180     OBJ_CONSTRUCT(&ompi_err_in_errno_intern, ompi_errcode_intern_t);
 181     ompi_err_in_errno_intern.code = OMPI_ERR_IN_ERRNO;
 182     ompi_err_in_errno_intern.mpi_code = MPI_ERR_INTERN;
 183     ompi_err_in_errno_intern.index = pos++;
 184     opal_string_copy(ompi_err_in_errno_intern.errstring,
 185                      "OMPI_ERR_IN_ERRNO", OMPI_MAX_ERROR_STRING);
 186     opal_pointer_array_set_item(&ompi_errcodes_intern, ompi_err_in_errno_intern.index,
 187                                 &ompi_err_in_errno_intern);
 188 
 189     OBJ_CONSTRUCT(&ompi_err_unreach_intern, ompi_errcode_intern_t);
 190     ompi_err_unreach_intern.code = OMPI_ERR_UNREACH;
 191     ompi_err_unreach_intern.mpi_code = MPI_ERR_INTERN;
 192     ompi_err_unreach_intern.index = pos++;
 193     opal_string_copy(ompi_err_unreach_intern.errstring,
 194                      "OMPI_ERR_UNREACH", OMPI_MAX_ERROR_STRING);
 195     opal_pointer_array_set_item(&ompi_errcodes_intern, ompi_err_unreach_intern.index,
 196                                 &ompi_err_unreach_intern);
 197 
 198     OBJ_CONSTRUCT(&ompi_err_not_found_intern, ompi_errcode_intern_t);
 199     ompi_err_not_found_intern.code = OMPI_ERR_NOT_FOUND;
 200     ompi_err_not_found_intern.mpi_code = MPI_ERR_INTERN;
 201     ompi_err_not_found_intern.index = pos++;
 202     opal_string_copy(ompi_err_not_found_intern.errstring,
 203                      "OMPI_ERR_NOT_FOUND", OMPI_MAX_ERROR_STRING);
 204     opal_pointer_array_set_item(&ompi_errcodes_intern, ompi_err_not_found_intern.index,
 205                                 &ompi_err_not_found_intern);
 206 
 207     OBJ_CONSTRUCT(&ompi_err_buffer_intern, ompi_errcode_intern_t);
 208     ompi_err_buffer_intern.code = OMPI_ERR_BUFFER;
 209     ompi_err_buffer_intern.mpi_code = MPI_ERR_BUFFER;
 210     ompi_err_buffer_intern.index = pos++;
 211     opal_string_copy(ompi_err_buffer_intern.errstring,
 212                      "OMPI_ERR_BUFFER", OMPI_MAX_ERROR_STRING);
 213     opal_pointer_array_set_item(&ompi_errcodes_intern, ompi_err_buffer_intern.index,
 214                                 &ompi_err_buffer_intern);
 215 
 216     OBJ_CONSTRUCT(&ompi_err_request_intern, ompi_errcode_intern_t);
 217     ompi_err_request_intern.code = OMPI_ERR_REQUEST;
 218     ompi_err_request_intern.mpi_code = MPI_ERR_REQUEST;
 219     ompi_err_request_intern.index = pos++;
 220     opal_string_copy(ompi_err_request_intern.errstring,
 221                      "OMPI_ERR_REQUEST", OMPI_MAX_ERROR_STRING);
 222     opal_pointer_array_set_item(&ompi_errcodes_intern, ompi_err_request_intern.index,
 223                                 &ompi_err_request_intern);
 224 
 225     OBJ_CONSTRUCT(&ompi_err_rma_sync_intern, ompi_errcode_intern_t);
 226     ompi_err_rma_sync_intern.code = OMPI_ERR_RMA_SYNC;
 227     ompi_err_rma_sync_intern.mpi_code = MPI_ERR_RMA_SYNC;
 228     ompi_err_rma_sync_intern.index = pos++;
 229     opal_string_copy(ompi_err_rma_sync_intern.errstring,
 230                      "OMPI_ERR_RMA_SYNC", OMPI_MAX_ERROR_STRING);
 231     opal_pointer_array_set_item(&ompi_errcodes_intern, ompi_err_rma_sync_intern.index,
 232                                 &ompi_err_rma_sync_intern);
 233 
 234     OBJ_CONSTRUCT(&ompi_err_rma_shared_intern, ompi_errcode_intern_t);
 235     ompi_err_rma_shared_intern.code = OMPI_ERR_RMA_SHARED;
 236     ompi_err_rma_shared_intern.mpi_code = MPI_ERR_RMA_SHARED;
 237     ompi_err_rma_shared_intern.index = pos++;
 238     opal_string_copy(ompi_err_rma_shared_intern.errstring,
 239                      "OMPI_ERR_RMA_SHARED", OMPI_MAX_ERROR_STRING);
 240     opal_pointer_array_set_item(&ompi_errcodes_intern, ompi_err_rma_shared_intern.index,
 241                                 &ompi_err_rma_shared_intern);
 242 
 243     OBJ_CONSTRUCT(&ompi_err_rma_attach_intern, ompi_errcode_intern_t);
 244     ompi_err_rma_attach_intern.code = OMPI_ERR_RMA_ATTACH;
 245     ompi_err_rma_attach_intern.mpi_code = MPI_ERR_RMA_ATTACH;
 246     ompi_err_rma_attach_intern.index = pos++;
 247     opal_string_copy(ompi_err_rma_attach_intern.errstring,
 248                      "OMPI_ERR_RMA_ATTACH", OMPI_MAX_ERROR_STRING);
 249     opal_pointer_array_set_item(&ompi_errcodes_intern, ompi_err_rma_attach_intern.index,
 250                                 &ompi_err_rma_attach_intern);
 251 
 252     OBJ_CONSTRUCT(&ompi_err_rma_range_intern, ompi_errcode_intern_t);
 253     ompi_err_rma_range_intern.code = OMPI_ERR_RMA_RANGE;
 254     ompi_err_rma_range_intern.mpi_code = MPI_ERR_RMA_RANGE;
 255     ompi_err_rma_range_intern.index = pos++;
 256     opal_string_copy(ompi_err_rma_range_intern.errstring,
 257                      "OMPI_ERR_RMA_RANGE", OMPI_MAX_ERROR_STRING);
 258     opal_pointer_array_set_item(&ompi_errcodes_intern, ompi_err_rma_range_intern.index,
 259                                 &ompi_err_rma_range_intern);
 260 
 261     OBJ_CONSTRUCT(&ompi_err_rma_conflict_intern, ompi_errcode_intern_t);
 262     ompi_err_rma_conflict_intern.code = OMPI_ERR_RMA_CONFLICT;
 263     ompi_err_rma_conflict_intern.mpi_code = MPI_ERR_RMA_CONFLICT;
 264     ompi_err_rma_conflict_intern.index = pos++;
 265     opal_string_copy(ompi_err_rma_conflict_intern.errstring,
 266                      "OMPI_ERR_RMA_CONFLICT", OMPI_MAX_ERROR_STRING);
 267     opal_pointer_array_set_item(&ompi_errcodes_intern, ompi_err_rma_conflict_intern.index,
 268                                 &ompi_err_rma_conflict_intern);
 269 
 270     OBJ_CONSTRUCT(&ompi_err_win_intern, ompi_errcode_intern_t);
 271     ompi_err_win_intern.code = OMPI_ERR_WIN;
 272     ompi_err_win_intern.mpi_code = MPI_ERR_WIN;
 273     ompi_err_win_intern.index = pos++;
 274     opal_string_copy(ompi_err_win_intern.errstring,
 275                      "OMPI_ERR_WIN", OMPI_MAX_ERROR_STRING);
 276     opal_pointer_array_set_item(&ompi_errcodes_intern, ompi_err_win_intern.index,
 277                                 &ompi_err_win_intern);
 278 
 279     OBJ_CONSTRUCT(&ompi_err_rma_flavor_intern, ompi_errcode_intern_t);
 280     ompi_err_rma_flavor_intern.code = OMPI_ERR_RMA_FLAVOR;
 281     ompi_err_rma_flavor_intern.mpi_code = MPI_ERR_RMA_FLAVOR;
 282     ompi_err_rma_flavor_intern.index = pos++;
 283     opal_string_copy(ompi_err_rma_flavor_intern.errstring,
 284                      "OMPI_ERR_RMA_FLAVOR", OMPI_MAX_ERROR_STRING);
 285     opal_pointer_array_set_item(&ompi_errcodes_intern, ompi_err_rma_flavor_intern.index,
 286                                 &ompi_err_rma_flavor_intern);
 287 
 288     ompi_errcode_intern_lastused=pos;
 289     return OMPI_SUCCESS;
 290 }
 291 
 292 int ompi_errcode_intern_finalize(void)
 293 {
 294 
 295     OBJ_DESTRUCT(&ompi_success_intern);
 296     OBJ_DESTRUCT(&ompi_error_intern);
 297     OBJ_DESTRUCT(&ompi_err_out_of_resource_intern);
 298     OBJ_DESTRUCT(&ompi_err_temp_out_of_resource_intern);
 299     OBJ_DESTRUCT(&ompi_err_resource_busy_intern);
 300     OBJ_DESTRUCT(&ompi_err_bad_param_intern);
 301     OBJ_DESTRUCT(&ompi_err_fatal_intern);
 302     OBJ_DESTRUCT(&ompi_err_not_implemented_intern);
 303     OBJ_DESTRUCT(&ompi_err_not_supported_intern);
 304     OBJ_DESTRUCT(&ompi_err_interupted_intern);
 305     OBJ_DESTRUCT(&ompi_err_would_block_intern);
 306     OBJ_DESTRUCT(&ompi_err_in_errno_intern);
 307     OBJ_DESTRUCT(&ompi_err_unreach_intern);
 308     OBJ_DESTRUCT(&ompi_err_not_found_intern);
 309     OBJ_DESTRUCT(&ompi_err_buffer_intern);
 310     OBJ_DESTRUCT(&ompi_err_request_intern);
 311     OBJ_DESTRUCT(&ompi_err_rma_sync_intern);
 312     OBJ_DESTRUCT(&ompi_err_rma_shared_intern);
 313     OBJ_DESTRUCT(&ompi_err_rma_attach_intern);
 314     OBJ_DESTRUCT(&ompi_err_rma_range_intern);
 315     OBJ_DESTRUCT(&ompi_err_rma_conflict_intern);
 316     OBJ_DESTRUCT(&ompi_err_win_intern);
 317     OBJ_DESTRUCT(&ompi_err_rma_flavor_intern);
 318 
 319     OBJ_DESTRUCT(&ompi_errcodes_intern);
 320     return OMPI_SUCCESS;
 321 }
 322 
 323 static void ompi_errcode_intern_construct(ompi_errcode_intern_t *errcode)
 324 {
 325     errcode->code     = MPI_UNDEFINED;
 326     errcode->mpi_code = MPI_UNDEFINED;
 327     errcode->index    = MPI_UNDEFINED;
 328     memset ( errcode->errstring, 0, OMPI_MAX_ERROR_STRING);
 329     return;
 330 }
 331 
 332 static void ompi_errcode_intern_destruct(ompi_errcode_intern_t *errcode)
 333 {
 334     opal_pointer_array_set_item(&ompi_errcodes_intern, errcode->index, NULL);
 335     return;
 336 }

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