2 * Copyright (C) 2023 Jérémie Galarneau <jeremie.galarneau@efficios.com>
4 * SPDX-License-Identifier: LGPL-2.1-only
8 #ifndef LTTNG_EVENTFD_HPP
9 #define LTTNG_EVENTFD_HPP
11 #include <common/file-descriptor.hpp>
17 class eventfd : public file_descriptor {
19 /* Throws a posix_error exception on failure to create the underlying resource. */
20 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;
26 /* Throws on error. */
27 void increment(std::uint64_t value = 1);
29 * Note that decrement() will block if the underlying value of the eventfd is 0 when
30 * semaphore semantics are used, see EVENTFD(2).
32 * decrement() returns the new value of the underlying counter of the eventfd.
36 std::uint64_t decrement();
39 } /* namespace lttng */
41 #endif /* LTTNG_EVENTFD_HPP */