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 syscall(2).
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.
The address in mmio_addr
is invalid.
user_buffer
does not point to a valid location in the
caller's address space.
Invalid length
argument.
PCI support is not enabled.
Insufficient memory.
Linux on s390.
Linux 3.19. System z EC12.
syscall(2)