Add the lttng::eventfd class
[lttng-tools.git] / src / common / random.cpp
index 8d9bcfd41e0beb09147918c569d03b83fcfbf32e..dfab9538c0cab31cd4f556547a9f4e7b261d7fe3 100644 (file)
@@ -5,6 +5,7 @@
  *
  */
 
+#include <common/error.hpp>
 #include <common/file-descriptor.hpp>
 #include <common/format.hpp>
 #include <common/hashtable/utils.hpp>
@@ -72,7 +73,9 @@ void getrandom_nonblock(char *out_data, std::size_t size)
        }
 }
 #else /* defined(__linux__) && defined(SYS_getrandom) && defined(HAVE_SYS_RANDOM_H) */
-void getrandom_nonblock(char *out_data, std::size_t size)
+__attribute__((noreturn))
+void getrandom_nonblock(char *out_data __attribute__((unused)),
+               std::size_t size __attribute__((unused)))
 {
        LTTNG_THROW_RANDOM_PRODUCTION_ERROR("getrandom() is not supported by this platform");
 }
@@ -136,11 +139,11 @@ lttng::random::seed_t produce_random_seed_from_urandom()
        }() };
 
        lttng::random::seed_t seed;
-       const auto read_ret = lttng_read(urandom.fd(), &seed, sizeof(seed));
-       if (read_ret != sizeof(seed)) {
-               LTTNG_THROW_POSIX(fmt::format("Failed to read from `/dev/urandom`: size={}",
-                                             sizeof(seed)),
-                                 errno);
+       try {
+               urandom.read(&seed, sizeof(seed));
+       } catch (const std::exception& e) {
+               LTTNG_THROW_RANDOM_PRODUCTION_ERROR(fmt::format(
+                       "Failed to read from `/dev/urandom`: size={}: {}", sizeof(seed), e.what()));
        }
 
        return seed;
This page took 0.023876 seconds and 4 git commands to generate.