X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Ffs-handle.c;h=58763a0b2d60cc2fff65f1e8c7e29422e84a9b27;hp=e90f06d325487f4322b220e041f91d094745cfe6;hb=8bb66c3cd60938352927ee865759433387324250;hpb=f7c3ffd79ddcece895eb0de616001d549aced5fc diff --git a/src/common/fs-handle.c b/src/common/fs-handle.c index e90f06d32..58763a0b2 100644 --- a/src/common/fs-handle.c +++ b/src/common/fs-handle.c @@ -15,8 +15,9 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include #include +#include +#include LTTNG_HIDDEN int fs_handle_get_fd(struct fs_handle *handle) @@ -41,3 +42,71 @@ int fs_handle_close(struct fs_handle *handle) { return handle->close(handle); } + +LTTNG_HIDDEN +ssize_t fs_handle_read(struct fs_handle *handle, void *buf, size_t count) +{ + ssize_t ret; + const int fd = fs_handle_get_fd(handle); + + if (fd < 0) { + ret = -1; + goto end; + } + + ret = lttng_read(fd, buf, count); + fs_handle_put_fd(handle); +end: + return ret; +} + +LTTNG_HIDDEN +ssize_t fs_handle_write(struct fs_handle *handle, const void *buf, size_t count) +{ + ssize_t ret; + const int fd = fs_handle_get_fd(handle); + + if (fd < 0) { + ret = -1; + goto end; + } + + ret = lttng_write(fd, buf, count); + fs_handle_put_fd(handle); +end: + return ret; +} + +LTTNG_HIDDEN +int fs_handle_truncate(struct fs_handle *handle, off_t offset) +{ + int ret; + const int fd = fs_handle_get_fd(handle); + + if (fd < 0) { + ret = -1; + goto end; + } + + ret = ftruncate(fd, offset); + fs_handle_put_fd(handle); +end: + return ret; +} + +LTTNG_HIDDEN +int fs_handle_seek(struct fs_handle *handle, off_t offset, int whence) +{ + int ret; + const int fd = fs_handle_get_fd(handle); + + if (fd < 0) { + ret = -1; + goto end; + } + + ret = lseek(fd, offset, whence); + fs_handle_put_fd(handle); +end: + return ret; +}