util/rand_xor: drop unused header
[mesa.git] / src / util / rand_xor.c
index de04bbc284f7a5e75fba95b284b0c74dc1734437..b486a53343cc40c0ef8bc48969856e8b3063e731 100644 (file)
@@ -23,7 +23,9 @@
  */
 
 #if defined(__linux__)
-#include <sys/file.h>
+#if defined(HAVE_GETRANDOM)
+#include <sys/random.h>
+#endif
 #include <unistd.h>
 #include <fcntl.h>
 #else
@@ -38,7 +40,7 @@
  * to the public domain.
  */
 uint64_t
-rand_xorshift128plus(uint64_t *seed)
+rand_xorshift128plus(uint64_t seed[2])
 {
    uint64_t *s = seed;
 
@@ -52,17 +54,24 @@ rand_xorshift128plus(uint64_t *seed)
 }
 
 void
-s_rand_xorshift128plus(uint64_t *seed, bool randomised_seed)
+s_rand_xorshift128plus(uint64_t seed[2], bool randomised_seed)
 {
    if (!randomised_seed)
       goto fixed_seed;
 
 #if defined(__linux__)
+   size_t seed_size = sizeof(uint64_t) * 2;
+
+#if defined(HAVE_GETRANDOM)
+   ssize_t ret = getrandom(seed, seed_size, GRND_NONBLOCK);
+   if (ret == seed_size)
+      return;
+#endif
+
    int fd = open("/dev/urandom", O_RDONLY);
    if (fd < 0)
       goto fixed_seed;
 
-   size_t seed_size = sizeof(uint64_t) * 2;
    if (read(fd, seed, seed_size) != seed_size) {
       close(fd);
       goto fixed_seed;