This source file includes following definitions.
- shmem_ptr
   1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 
  13 #include "oshmem_config.h"
  14 
  15 #include <stdlib.h>
  16 
  17 #include "oshmem/constants.h"
  18 #include "oshmem/include/shmem.h"
  19 #include "oshmem/shmem/shmem_api_logger.h"
  20 
  21 #include "oshmem/runtime/runtime.h"
  22 #include "oshmem/mca/memheap/memheap.h"
  23 #include "oshmem/mca/memheap/base/base.h"
  24 
  25 
  26 #if OSHMEM_PROFILING
  27 #include "oshmem/include/pshmem.h"
  28 #pragma weak shmem_ptr = pshmem_ptr
  29 #include "oshmem/shmem/c/profile/defines.h"
  30 #endif
  31 
  32 void *shmem_ptr(const void *dst_addr, int pe)
  33 {
  34     ompi_proc_t *proc;
  35     sshmem_mkey_t *mkey;
  36     int i;
  37     void *rva;
  38 
  39     RUNTIME_CHECK_INIT();
  40     RUNTIME_CHECK_PE(pe);
  41     RUNTIME_CHECK_ADDR(dst_addr);
  42 
  43     
  44     if (pe == oshmem_my_proc_id()) {
  45         return (void *)dst_addr;
  46     }
  47 
  48     
  49     proc = oshmem_proc_group_find(oshmem_group_all, pe);
  50     if (!OPAL_PROC_ON_LOCAL_NODE(proc->super.proc_flags)) {
  51         return NULL;
  52     }
  53 
  54     for (i = 0; i < mca_memheap_base_num_transports(); i++) {
  55         
  56         mkey = mca_memheap_base_get_cached_mkey(oshmem_ctx_default, pe, (void *)dst_addr, i, &rva);
  57         if (!mkey) {
  58             continue;
  59         }
  60 
  61         if (mca_memheap_base_mkey_is_shm(mkey)) {
  62             return rva;
  63         }
  64 
  65         rva = MCA_SPML_CALL(rmkey_ptr(dst_addr, mkey, pe));
  66         if (rva != NULL) {
  67             return rva;
  68         }
  69     }
  70 
  71     return NULL;
  72 }