X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Ffs-handle.cpp;fp=src%2Fcommon%2Ffs-handle.cpp;h=bed0010e76d9f850b5f88e40035f5ae0099ca59f;hp=0000000000000000000000000000000000000000;hb=a6bc4ca9d659caf016ef932fcd944029737ac57c;hpb=97535efaa975ca52bf02c2d5e76351bfd2e3defa diff --git a/src/common/fs-handle.cpp b/src/common/fs-handle.cpp new file mode 100644 index 000000000..bed0010e7 --- /dev/null +++ b/src/common/fs-handle.cpp @@ -0,0 +1,94 @@ +/* + * Copyright (C) 2020 Jérémie Galarneau + * + * SPDX-License-Identifier: LGPL-2.1-only + * + */ + +#include +#include +#include + +int fs_handle_get_fd(struct fs_handle *handle) +{ + return handle->get_fd(handle); +} + +void fs_handle_put_fd(struct fs_handle *handle) +{ + return handle->put_fd(handle); +} + +int fs_handle_unlink(struct fs_handle *handle) +{ + return handle->unlink(handle); +} + +int fs_handle_close(struct fs_handle *handle) +{ + return handle->close(handle); +} + +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; +} + +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; +} + +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; +} + +off_t fs_handle_seek(struct fs_handle *handle, off_t offset, int whence) +{ + off_t 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; +}