2 * Copyright (C) 2023 Jérémie Galarneau <jeremie.galarneau@efficios.com>
4 * SPDX-License-Identifier: LGPL-2.1-only
11 #include "exception.hpp"
19 using seed_t = unsigned int;
21 class production_error : public ::lttng::runtime_error {
23 explicit production_error(const std::string& msg,
24 const lttng::source_location& source_location);
28 * Get a seed from a reliable source of randomness without blocking, raising
29 * an exception on failure.
31 seed_t produce_true_random_seed();
34 * Get a random seed making a best-effort to use a true randomness source,
35 * but falling back to a pseudo-random seed based on the time and various system
36 * configuration values on failure.
38 * Note that this function attempts to use the urandom device, which will block
39 * in the unlikely event that its pool is uninitialized, on platforms that don't
40 * provide getrandom().
42 seed_t produce_best_effort_random_seed();
44 } /* namespace random */
45 } /* namespace lttng */
47 #endif /* LTTNG_RANDOM_H */