Fix: syscall event rule: emission sites not compared in is_equal
[lttng-tools.git] / src / common / fs-handle.hpp
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 FS_HANDLE_H
9 #define FS_HANDLE_H
10
11 #include <common/macros.hpp>
12
13 #include <stdio.h>
14
15 struct fs_handle;
16
17 /*
18 * Marks the handle as the most recently used and marks the 'fd' as
19 * "in-use". This prevents the tracker from recycling the underlying
20 * file descriptor while it is actively being used by a thread.
21 *
22 * Don't forget that the tracker may be initiating an fd 'suspension'
23 * from another thread as the need to free an fd slot may arise from any
24 * thread within the daemon.
25 *
26 * Note that a restorable fd should never be held for longer than
27 * strictly necessary (e.g. the duration of a syscall()).
28 *
29 * Returns the fd on success, otherwise a negative value may be returned
30 * if the restoration of the fd failed.
31 */
32 int fs_handle_get_fd(struct fs_handle *handle);
33
34 /*
35 * Used by the caller to signal that it is no longer using the underlying fd and
36 * that it may be safely suspended.
37 */
38 void fs_handle_put_fd(struct fs_handle *handle);
39
40 /*
41 * Unlink the file associated to an fs_handle. Note that the unlink
42 * operation will not be performed immediately. It will only be performed
43 * once all references to the underlying file (through other fs_handle objects)
44 * have been released.
45 *
46 * However, note that the file will be renamed so as to provide the observable
47 * effect of an unlink(), that is removing a name from the filesystem.
48 *
49 * Returns 0 on success, otherwise a negative value will be returned
50 * if the operation failed.
51 */
52 int fs_handle_unlink(struct fs_handle *handle);
53
54 /*
55 * Frees the handle and discards the underlying fd.
56 */
57 int fs_handle_close(struct fs_handle *handle);
58
59 ssize_t fs_handle_read(struct fs_handle *handle, void *buf, size_t count);
60
61 ssize_t fs_handle_write(struct fs_handle *handle, const void *buf, size_t count);
62
63 int fs_handle_truncate(struct fs_handle *handle, off_t offset);
64
65 off_t fs_handle_seek(struct fs_handle *handle, off_t offset, int whence);
66
67 #endif /* FS_HANDLE_H */
This page took 0.030148 seconds and 4 git commands to generate.