diff options
-rw-r--r-- | include/sys/uio.h | 9 | ||||
-rw-r--r-- | src/linux/process_vm.c | 13 |
2 files changed, 22 insertions, 0 deletions
diff --git a/include/sys/uio.h b/include/sys/uio.h index f77db33a..7a75a542 100644 --- a/include/sys/uio.h +++ b/include/sys/uio.h @@ -9,11 +9,20 @@ extern "C" { #define __NEED_ssize_t #define __NEED_struct_iovec +#ifdef _GNU_SOURCE +#define __NEED_pid_t +#endif + #include <bits/alltypes.h> ssize_t readv (int, const struct iovec *, int); ssize_t writev (int, const struct iovec *, int); +#ifdef _GNU_SOURCE +ssize_t process_vm_writev(pid_t, const struct iovec *, unsigned long, const struct iovec *, unsigned long, unsigned long); +ssize_t process_vm_readv(pid_t, const struct iovec *, unsigned long, const struct iovec *, unsigned long, unsigned long); +#endif + #ifdef __cplusplus } #endif diff --git a/src/linux/process_vm.c b/src/linux/process_vm.c new file mode 100644 index 00000000..7703bdf0 --- /dev/null +++ b/src/linux/process_vm.c @@ -0,0 +1,13 @@ +#define _GNU_SOURCE +#include <sys/uio.h> +#include "syscall.h" + +ssize_t process_vm_writev(pid_t pid, const struct iovec *lvec, unsigned long liovcnt, const struct iovec *rvec, unsigned long riovcnt, unsigned long flags) +{ + return syscall(SYS_process_vm_writev, pid, lvec, liovcnt, rvec, riovcnt, flags); +} + +ssize_t process_vm_readv(pid_t pid, const struct iovec *lvec, unsigned long liovcnt, const struct iovec *rvec, unsigned long riovcnt, unsigned long flags) +{ + return syscall(SYS_process_vm_readv, pid, lvec, liovcnt, rvec, riovcnt, flags); +} |