Provided by: manpages-dev_6.03-1_all bug


       s390_pci_mmio_write, s390_pci_mmio_read - transfer data to/from PCI MMIO memory page


       Standard C library (libc, -lc)


       #include <sys/syscall.h>      /* Definition of SYS_* constants */
       #include <unistd.h>

       int syscall(SYS_s390_pci_mmio_write, unsigned long mmio_addr,
                              const void user_buffer[.length], size_t length);
       int syscall(SYS_s390_pci_mmio_read, unsigned long mmio_addr,
                              void user_buffer[.length], size_t length);

       Note:  glibc  provides  no  wrappers  for  these  system  calls,  necessitating the use of


       The s390_pci_mmio_write() system call writes length bytes  of  data  from  the  user-space
       buffer  user_buffer  to  the  PCI  MMIO  memory  location  specified  by  mmio_addr.   The
       s390_pci_mmio_read() system call reads length bytes of  data  from  the  PCI  MMIO  memory
       location specified by mmio_addr to the user-space buffer user_buffer.

       These  system  calls  must  be  used  instead  of  the  simple assignment or data-transfer
       operations that are used to access the PCI MMIO memory areas mapped to user space  on  the
       Linux  System  z  platform.   The address specified by mmio_addr must belong to a PCI MMIO
       memory page mapping in the caller's address space, and the data being written or read must
       not cross a page boundary.  The length value cannot be greater than the system page size.


       On  success,  s390_pci_mmio_write()  and s390_pci_mmio_read() return 0.  On failure, -1 is
       returned and errno is set to indicate the error.


       EFAULT The address in mmio_addr is invalid.

       EFAULT user_buffer does not point to a valid location in the caller's address space.

       EINVAL Invalid length argument.

       ENODEV PCI support is not enabled.

       ENOMEM Insufficient memory.


       These system calls are available since Linux 3.19.


       This Linux-specific system call is available only on the s390 architecture.  The  required
       PCI support is available beginning with System z EC12.