root/oshmem/mca/atomic/mxm/atomic_mxm_module.c

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

DEFINITIONS

This source file includes following definitions.
  1. mca_atomic_mxm_startup
  2. mca_atomic_mxm_finalize
  3. mca_atomic_mxm_op_not_implemented
  4. mca_atomic_mxm_fop_not_implemented
  5. mca_atomic_mxm_query

   1 /*
   2  * Copyright (c) 2013      Mellanox Technologies, Inc.
   3  *                         All rights reserved.
   4  * $COPYRIGHT$
   5  *
   6  * Additional copyrights may follow
   7  *
   8  * $HEADER$
   9  */
  10 
  11 #include "oshmem_config.h"
  12 #include <stdio.h>
  13 
  14 #include "oshmem/constants.h"
  15 #include "oshmem/mca/atomic/atomic.h"
  16 #include "oshmem/mca/spml/spml.h"
  17 #include "oshmem/mca/memheap/memheap.h"
  18 #include "oshmem/proc/proc.h"
  19 #include "atomic_mxm.h"
  20 
  21 /*
  22  * Initial query function that is invoked during initialization, allowing
  23  * this module to indicate what level of thread support it provides.
  24  */
  25 int mca_atomic_mxm_startup(bool enable_progress_threads, bool enable_threads)
  26 {
  27     return OSHMEM_SUCCESS;
  28 }
  29 
  30 int mca_atomic_mxm_finalize(void)
  31 {
  32     return OSHMEM_SUCCESS;
  33 }
  34 
  35 static int mca_atomic_mxm_op_not_implemented(shmem_ctx_t ctx,
  36                                              void *target,
  37                                              uint64_t value,
  38                                              size_t size,
  39                                              int pe)
  40 {
  41     return OSHMEM_ERR_NOT_IMPLEMENTED;
  42 }
  43 
  44 static int mca_atomic_mxm_fop_not_implemented(shmem_ctx_t ctx,
  45                                               void *target,
  46                                               void *prev,
  47                                               uint64_t value,
  48                                               size_t size,
  49                                               int pe)
  50 {
  51     return OSHMEM_ERR_NOT_IMPLEMENTED;
  52 }
  53 
  54 mca_atomic_base_module_t *
  55 mca_atomic_mxm_query(int *priority)
  56 {
  57     mca_atomic_mxm_module_t *module;
  58 
  59     *priority = mca_atomic_mxm_component.priority;
  60 
  61     module = OBJ_NEW(mca_atomic_mxm_module_t);
  62     if (module) {
  63         module->super.atomic_add   = mca_atomic_mxm_add;
  64         module->super.atomic_and   = mca_atomic_mxm_op_not_implemented;
  65         module->super.atomic_or    = mca_atomic_mxm_op_not_implemented;
  66         module->super.atomic_xor   = mca_atomic_mxm_op_not_implemented;
  67         module->super.atomic_fadd  = mca_atomic_mxm_fadd;
  68         module->super.atomic_fand  = mca_atomic_mxm_fop_not_implemented;
  69         module->super.atomic_for   = mca_atomic_mxm_fop_not_implemented;
  70         module->super.atomic_fxor  = mca_atomic_mxm_fop_not_implemented;
  71         module->super.atomic_swap  = mca_atomic_mxm_swap;
  72         module->super.atomic_cswap = mca_atomic_mxm_cswap;
  73         return &(module->super);
  74     }
  75 
  76     return NULL ;
  77 }

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