root/opal/mca/pmix/pmix4x/pmix/src/atomics/sys/cma.h

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

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. process_vm_readv
  2. process_vm_writev

   1 /*
   2  * Copyright (c) 2011-2012 IBM Corporation.  All rights reserved.
   3  * Copyright (c) 2016      Los Alamos National Security, LLC. All rights
   4  *                         reserved.
   5  * Copyright (c) 2017      Research Organization for Information Science
   6  *                         and Technology (RIST). All rights reserved.
   7  * Copyright (c) 2018      Intel, Inc.  All rights reserved.
   8  * $COPYRIGHT$
   9  */
  10 
  11 /** @file
  12  *
  13  * Cross Memory Attach syscall definitions.
  14  *
  15  * These are only needed temporarily until these new syscalls
  16  * are incorporated into glibc
  17  */
  18 
  19 #ifndef PMIX_SYS_CMA_H
  20 #define PMIX_SYS_CMA_H 1
  21 
  22 #if !defined(PMIX_ASSEMBLY_ARCH)
  23 /* need pmix_config.h for the assembly architecture */
  24 #include "pmix_config.h"
  25 #endif
  26 
  27 #include "src/atomics/sys/architecture.h"
  28 
  29 #ifdef HAVE_SYS_TYPES_H
  30 #include <sys/types.h>
  31 #endif
  32 
  33 #ifdef HAVE_UNISTD_H
  34 #include <sys/unistd.h>
  35 #endif
  36 
  37 #ifdef __linux__
  38 
  39 /* Cross Memory Attach is so far only supported under linux */
  40 
  41 #if PMIX_ASSEMBLY_ARCH == PMIX_X86_64
  42 #define __NR_process_vm_readv 310
  43 #define __NR_process_vm_writev 311
  44 #elif PMIX_ASSEMBLY_ARCH == PMIX_IA32
  45 #define __NR_process_vm_readv 347
  46 #define __NR_process_vm_writev 348
  47 #elif PMIX_ASSEMBLY_ARCH == PMIX_IA64
  48 #define __NR_process_vm_readv 1332
  49 #define __NR_process_vm_writev 1333
  50 #elif PMIX_ASSEMBLY_ARCH == PMIX_POWERPC32
  51 #define __NR_process_vm_readv 351
  52 #define __NR_process_vm_writev 352
  53 #elif PMIX_ASSEMBLY_ARCH == PMIX_POWERPC64
  54 #define __NR_process_vm_readv 351
  55 #define __NR_process_vm_writev 352
  56 #elif PMIX_ASSEMBLY_ARCH == PMIX_ARM
  57 
  58 #define __NR_process_vm_readv 376
  59 #define __NR_process_vm_writev 377
  60 
  61 #elif PMIX_ASSEMBLY_ARCH == PMIX_ARM64
  62 
  63 /* ARM64 uses the asm-generic syscall numbers */
  64 
  65 #define __NR_process_vm_readv 270
  66 #define __NR_process_vm_writev 271
  67 
  68 #elif PMIX_ASSEMBLY_ARCH == PMIX_MIPS
  69 
  70 #if _MIPS_SIM == _MIPS_SIM_ABI64
  71 
  72 #define __NR_process_vm_readv 5304
  73 #define __NR_process_vm_writev 5305
  74 
  75 #elif _MIPS_SIM == _MIPS_SIM_NABI32
  76 
  77 #define __NR_process_vm_readv 6309
  78 #define __NR_process_vm_writev 6310
  79 
  80 #else
  81 
  82 #error "Unsupported MIPS architecture for process_vm_readv and process_vm_writev syscalls"
  83 
  84 #endif
  85 
  86 #elif PMIX_ASSEMBLY_ARCH == PMIX_S390
  87 
  88 #define __NR_process_vm_readv   340
  89 #define __NR_process_vm_writev  341
  90 
  91 #elif PMIX_ASSEMBLY_ARCH == PMIX_S390X
  92 
  93 #define __NR_process_vm_readv   340
  94 #define __NR_process_vm_writev  341
  95 
  96 #else
  97 #error "Unsupported architecture for process_vm_readv and process_vm_writev syscalls"
  98 #endif
  99 
 100 
 101 static inline ssize_t
 102 process_vm_readv(pid_t pid,
 103                  const struct iovec  *lvec,
 104                  unsigned long liovcnt,
 105                  const struct iovec *rvec,
 106                  unsigned long riovcnt,
 107                  unsigned long flags)
 108 {
 109   return syscall(__NR_process_vm_readv, pid, lvec, liovcnt, rvec, riovcnt, flags);
 110 }
 111 
 112 static inline ssize_t
 113 process_vm_writev(pid_t pid,
 114                   const struct iovec  *lvec,
 115                   unsigned long liovcnt,
 116                   const struct iovec *rvec,
 117                   unsigned long riovcnt,
 118                   unsigned long flags)
 119 {
 120   return syscall(__NR_process_vm_writev, pid, lvec, liovcnt, rvec, riovcnt, flags);
 121 }
 122 
 123 #endif /* __linux__ */
 124 
 125 #endif /* PMIX_SYS_CMA_H */

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