Fix: syscall event rule: emission sites not compared in is_equal
[lttng-tools.git] / src / common / eventfd.hpp
CommitLineData
20c734f5
JG
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
15namespace lttng {
16
17class eventfd : public file_descriptor {
18public:
19 /* Throws a posix_error exception on failure to create the underlying resource. */
b4853cf4 20 explicit eventfd(bool use_semaphore_semantics = true, std::uint64_t initial_value = 0);
20c734f5
JG
21 eventfd(const eventfd&) = delete;
22 eventfd& operator=(const eventfd&) = delete;
23 eventfd(eventfd&&) = delete;
24 void operator=(eventfd&&) = delete;
b4853cf4 25 ~eventfd() = default;
20c734f5
JG
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.032785 seconds and 4 git commands to generate.