NAME
s390_pci_mmio_write, s390_pci_mmio_read - transfer data to/from PCI MMIO memory page
LIBRARY
Standard C library (libc, -lc)
SYNOPSIS
#include <sys/syscall.h>\n /* Definition of \nSYS_*\n constants */
\n#include <unistd.h>int syscall(SYS_s390_pci_mmio_write, unsigned long \nmmio_addr\n,\n
\n const void \nuser_buffer\n[.\nlength\n], size_t \nlength\n);\n
\nint syscall(SYS_s390_pci_mmio_read, unsigned long \nmmio_addr\n,\n
\n void \nuser_buffer\n[.\nlength\n], size_t \nlength\n);Note: glibc provides no wrappers for these system calls, necessitating the use of syscall(2).
DESCRIPTION
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.
RETURN VALUE
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.
ERRORS
- 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.
STANDARDS
Linux on s390.
HISTORY
Linux 3.19. System z EC12.
SEE ALSO
syscall(2)