2 * Copyright (C) 2020 Jérémie Galarneau <jeremie.galarneau@efficios.com>
4 * SPDX-License-Identifier: LGPL-2.1-only
11 #include <common/macros.hpp>
14 * Wrapper around a file descriptor providing reference counting semantics.
16 * An fd_handle will close() the underlying file descriptor when its reference
21 /* Create a file descriptor handle. */
22 struct fd_handle *fd_handle_create(int fd);
24 /* Acquire reference to a file descriptor handle. */
25 void fd_handle_get(struct fd_handle *handle);
27 /* Release reference to a file descriptor handle. */
28 void fd_handle_put(struct fd_handle *handle);
31 * Return the underlying file descriptor of a file descriptor handle.
33 * This function can't fail.
35 int fd_handle_get_fd(struct fd_handle *handle);
38 * Obtain a copy of a file descriptor handle.
40 * On success, the caller becomes the sole owner of the returned file descriptor
41 * handle. The underlying file descriptor is duplicated using dup(). Refer to
42 * the system documentation for the semantics of dup() for this particular file
45 struct fd_handle *fd_handle_copy(const struct fd_handle *handle);
47 #endif /* FS_HANDLE_H */