diff options
author | Rich Felker <dalias@aerifal.cx> | 2012-06-23 21:38:47 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2012-06-23 21:38:47 -0400 |
commit | 9cf9c39e48342a5d4007824d49b88132d93d83e3 (patch) | |
tree | 381b48e6dcf6456a4ba0c346faf5090690c75dbc | |
parent | 213db3e3fa715288dea6a0d317b9c04b609dca7b (diff) | |
download | musl-9cf9c39e48342a5d4007824d49b88132d93d83e3.tar.gz musl-9cf9c39e48342a5d4007824d49b88132d93d83e3.tar.bz2 musl-9cf9c39e48342a5d4007824d49b88132d93d83e3.tar.xz musl-9cf9c39e48342a5d4007824d49b88132d93d83e3.zip |
add process_vm_readv and process_vm_writev syscall wrappers
based on a patch submitted by Kristian L. <email@thexception.net>
-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); +} |