Commit | Line | Data |
---|---|---|
dd1bac00 JG |
1 | /* |
2 | * Copyright (C) 2020 Jérémie Galarneau <jeremie.galarneau@efficios.com> | |
3 | * | |
4 | * SPDX-License-Identifier: LGPL-2.1-only | |
5 | * | |
6 | */ | |
7 | ||
8 | #ifndef FD_HANDLE_H | |
9 | #define FD_HANDLE_H | |
10 | ||
11 | #include <common/macros.h> | |
12 | ||
13 | /* | |
14 | * Wrapper around a file descriptor providing reference counting semantics. | |
15 | * | |
16 | * An fd_handle will close() the underlying file descriptor when its reference | |
17 | * count reaches zero. | |
18 | */ | |
19 | struct fd_handle; | |
20 | ||
21 | /* Create a file descriptor handle. */ | |
22 | LTTNG_HIDDEN | |
23 | struct fd_handle *fd_handle_create(int fd); | |
24 | ||
25 | /* Acquire reference to a file descriptor handle. */ | |
26 | LTTNG_HIDDEN | |
27 | void fd_handle_get(struct fd_handle *handle); | |
28 | ||
29 | /* Release reference to a file descriptor handle. */ | |
30 | LTTNG_HIDDEN | |
31 | void fd_handle_put(struct fd_handle *handle); | |
32 | ||
33 | /* | |
34 | * Return the underlying file descriptor of a file descriptor handle. | |
35 | * | |
36 | * This function can't fail. | |
37 | */ | |
38 | LTTNG_HIDDEN | |
39 | int fd_handle_get_fd(struct fd_handle *handle); | |
40 | ||
41 | /* | |
42 | * Obtain a copy of a file descriptor handle. | |
43 | * | |
44 | * On success, the caller becomes the sole owner of the returned file descriptor | |
45 | * handle. The underlying file descriptor is duplicated using dup(). Refer to | |
46 | * the system documentation for the semantics of dup() for this particular file | |
47 | * descriptor type. | |
48 | */ | |
49 | LTTNG_HIDDEN | |
50 | struct fd_handle *fd_handle_copy(const struct fd_handle *handle); | |
51 | ||
52 | #endif /* FS_HANDLE_H */ |