Fix: syscall event rule: emission sites not compared in is_equal
[lttng-tools.git] / src / common / eventfd.hpp
1 /*
2 * Copyright (C) 2023 Jérémie Galarneau <jeremie.galarneau@efficios.com>
3 *
4 * SPDX-License-Identifier: LGPL-2.1-only
5 *
6 */
7
8 #ifndef LTTNG_EVENTFD_HPP
9 #define LTTNG_EVENTFD_HPP
10
11 #include <common/file-descriptor.hpp>
12
13 #include <cstdint>
14
15 namespace lttng {
16
17 class eventfd : public file_descriptor {
18 public:
19 /* Throws a posix_error exception on failure to create the underlying resource. */
20 explicit eventfd(bool use_semaphore_semantics = true, std::uint64_t initial_value = 0);
21 eventfd(const eventfd&) = delete;
22 eventfd& operator=(const eventfd&) = delete;
23 eventfd(eventfd&&) = delete;
24 void operator=(eventfd&&) = delete;
25 ~eventfd() = default;
26
27 /* Throws on error. */
28 void increment(std::uint64_t value = 1);
29 /*
30 * Note that decrement() will block if the underlying value of the eventfd is 0 when
31 * semaphore semantics are used, see EVENTFD(2).
32 *
33 * decrement() returns the new value of the underlying counter of the eventfd.
34 *
35 * Throws on error.
36 */
37 std::uint64_t decrement();
38 };
39
40 } /* namespace lttng */
41
42 #endif /* LTTNG_EVENTFD_HPP */
This page took 0.029419 seconds and 4 git commands to generate.