Loading include/client/user_functions.hpp +10 −2 Original line number Diff line number Diff line Loading @@ -43,9 +43,11 @@ #include <cstdint> #include <vector> extern "C" { #include <sys/types.h> #include <sys/stat.h> #include <sys/uio.h> } struct linux_dirent; Loading Loading @@ -83,6 +85,14 @@ gkfs_pwrite(int fd, const void* buf, size_t count, off64_t offset); ssize_t gkfs_pread(int fd, void* buf, size_t count, off64_t offset); ssize_t gkfs_readv(int fd, const struct iovec* iov, int iovcnt); ssize_t gkfs_writev(int fd, const struct iovec* iov, int iovcnt); int gkfs_stat(const std::string& path, struct stat* buf, bool follow_links = true); Loading Loading @@ -126,8 +136,6 @@ gkfs_readlink(const std::string& path, char* buf, int bufsize); #endif } // namespace syscall namespace malleable { Loading src/client/gkfs_libc.cpp +53 −0 Original line number Diff line number Diff line Loading @@ -216,6 +216,29 @@ DLSYM_WRAPPER(ssize_t, read, (int fd, void* buf, size_t nbyte), (fd, buf, nbyte), "read") DLSYM_WRAPPER(ssize_t, write, (int fd, const void* buf, size_t nbyte), (fd, buf, nbyte), "write") /* ssize_t readv(int fd, const struct iovec *iov, int iovcnt); ssize_t writev(int fd, const struct iovec *iov, int iovcnt); ssize_t preadv(int fd, const struct iovec *iov, int iovcnt, off_t offset); ssize_t pwritev(int fd, const struct iovec *iov, int iovcnt, off_t offset); ssize_t preadv2(int fd, const struct iovec *iov, int iovcnt, off_t offset, int flags); ssize_t pwritev2(int fd, const struct iovec *iov, int iovcnt, off_t offset, int flags); */ DLSYM_WRAPPER(ssize_t, readv, (int fd, const struct iovec* iov, int iovcnt), (fd, iov, iovcnt), "readv") DLSYM_WRAPPER(ssize_t, writev, (int fd, const struct iovec* iov, int iovcnt), (fd, iov, iovcnt), "writev") DLSYM_WRAPPER(int, mkdir, (const char* path, mode_t mode), (path, mode), "mkdir") DLSYM_WRAPPER(int, rmdir, (const char* path), (path), "rmdir") Loading Loading @@ -2080,3 +2103,33 @@ readlinkat(int dfd, const char* path, char* buf, size_t bufsize) { GKFS_FALLBACK(readlinkat, dfd, path, buf, bufsize); } #endif ssize_t readv(int fd, const struct iovec* iov, int iovcnt) { initializeGekko(); GKFS_OPERATION(readv, fd, iov, iovcnt) GKFS_FALLBACK(readv, fd, iov, iovcnt) } ssize_t writev(int fd, const struct iovec* iov, int iovcnt) { initializeGekko(); GKFS_OPERATION(writev, fd, iov, iovcnt) GKFS_FALLBACK(writev, fd, iov, iovcnt) } /* ssize_t preadv(int fd, const struct iovec *iov, int iovcnt, off_t offset); ssize_t pwritev(int fd, const struct iovec *iov, int iovcnt, off_t offset); ssize_t preadv2(int fd, const struct iovec *iov, int iovcnt, off_t offset, int flags); ssize_t pwritev2(int fd, const struct iovec *iov, int iovcnt, off_t offset, int flags); */ No newline at end of file Loading
include/client/user_functions.hpp +10 −2 Original line number Diff line number Diff line Loading @@ -43,9 +43,11 @@ #include <cstdint> #include <vector> extern "C" { #include <sys/types.h> #include <sys/stat.h> #include <sys/uio.h> } struct linux_dirent; Loading Loading @@ -83,6 +85,14 @@ gkfs_pwrite(int fd, const void* buf, size_t count, off64_t offset); ssize_t gkfs_pread(int fd, void* buf, size_t count, off64_t offset); ssize_t gkfs_readv(int fd, const struct iovec* iov, int iovcnt); ssize_t gkfs_writev(int fd, const struct iovec* iov, int iovcnt); int gkfs_stat(const std::string& path, struct stat* buf, bool follow_links = true); Loading Loading @@ -126,8 +136,6 @@ gkfs_readlink(const std::string& path, char* buf, int bufsize); #endif } // namespace syscall namespace malleable { Loading
src/client/gkfs_libc.cpp +53 −0 Original line number Diff line number Diff line Loading @@ -216,6 +216,29 @@ DLSYM_WRAPPER(ssize_t, read, (int fd, void* buf, size_t nbyte), (fd, buf, nbyte), "read") DLSYM_WRAPPER(ssize_t, write, (int fd, const void* buf, size_t nbyte), (fd, buf, nbyte), "write") /* ssize_t readv(int fd, const struct iovec *iov, int iovcnt); ssize_t writev(int fd, const struct iovec *iov, int iovcnt); ssize_t preadv(int fd, const struct iovec *iov, int iovcnt, off_t offset); ssize_t pwritev(int fd, const struct iovec *iov, int iovcnt, off_t offset); ssize_t preadv2(int fd, const struct iovec *iov, int iovcnt, off_t offset, int flags); ssize_t pwritev2(int fd, const struct iovec *iov, int iovcnt, off_t offset, int flags); */ DLSYM_WRAPPER(ssize_t, readv, (int fd, const struct iovec* iov, int iovcnt), (fd, iov, iovcnt), "readv") DLSYM_WRAPPER(ssize_t, writev, (int fd, const struct iovec* iov, int iovcnt), (fd, iov, iovcnt), "writev") DLSYM_WRAPPER(int, mkdir, (const char* path, mode_t mode), (path, mode), "mkdir") DLSYM_WRAPPER(int, rmdir, (const char* path), (path), "rmdir") Loading Loading @@ -2080,3 +2103,33 @@ readlinkat(int dfd, const char* path, char* buf, size_t bufsize) { GKFS_FALLBACK(readlinkat, dfd, path, buf, bufsize); } #endif ssize_t readv(int fd, const struct iovec* iov, int iovcnt) { initializeGekko(); GKFS_OPERATION(readv, fd, iov, iovcnt) GKFS_FALLBACK(readv, fd, iov, iovcnt) } ssize_t writev(int fd, const struct iovec* iov, int iovcnt) { initializeGekko(); GKFS_OPERATION(writev, fd, iov, iovcnt) GKFS_FALLBACK(writev, fd, iov, iovcnt) } /* ssize_t preadv(int fd, const struct iovec *iov, int iovcnt, off_t offset); ssize_t pwritev(int fd, const struct iovec *iov, int iovcnt, off_t offset); ssize_t preadv2(int fd, const struct iovec *iov, int iovcnt, off_t offset, int flags); ssize_t pwritev2(int fd, const struct iovec *iov, int iovcnt, off_t offset, int flags); */ No newline at end of file