summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@edwardthomson.com>2022-06-13 11:19:55 -0400
committerEdward Thomson <ethomson@edwardthomson.com>2022-06-13 12:16:27 -0400
commit96c6117414942e6d3db56e73f2354a5fd15d4962 (patch)
tree3fa0e6d796fd7ca3e9e406627b773f4e8f041c74
parent3809ab0eb8dbc37a62336e62b5fe211e89b3d8e9 (diff)
downloadlibgit2-96c6117414942e6d3db56e73f2354a5fd15d4962.tar.gz
cmake: only use `getloadavg` where it exists
-rw-r--r--src/CMakeLists.txt1
-rw-r--r--src/features.h.in1
-rw-r--r--src/util/rand.c8
3 files changed, 8 insertions, 2 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 58e58259a..d16cfe538 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -71,6 +71,7 @@ check_function_exists(qsort_s GIT_QSORT_S)
# random / entropy data
check_function_exists(getentropy GIT_RAND_GETENTROPY)
+check_function_exists(getloadavg GIT_RAND_GETLOADAVG)
# determine architecture of the machine
diff --git a/src/features.h.in b/src/features.h.in
index e14e83359..fbf0cab60 100644
--- a/src/features.h.in
+++ b/src/features.h.in
@@ -57,5 +57,6 @@
#cmakedefine GIT_SHA256_MBEDTLS 1
#cmakedefine GIT_RAND_GETENTROPY 1
+#cmakedefine GIT_RAND_GETLOADAVG 1
#endif
diff --git a/src/util/rand.c b/src/util/rand.c
index 432494902..d28e4aa97 100644
--- a/src/util/rand.c
+++ b/src/util/rand.c
@@ -106,8 +106,6 @@ GIT_INLINE(int) getseed(uint64_t *seed)
return -1;
}
- getloadavg(loadavg, 3);
-
*seed = 0;
*seed |= ((uint64_t)tv.tv_usec << 40);
*seed |= ((uint64_t)tv.tv_sec);
@@ -119,9 +117,15 @@ GIT_INLINE(int) getseed(uint64_t *seed)
*seed ^= ((uint64_t)getuid() << 8);
*seed ^= ((uint64_t)getgid());
+# if defined(GIT_RAND_GETLOADAVG)
+ getloadavg(loadavg, 3);
+
convert.f = loadavg[0]; *seed ^= (convert.d >> 36);
convert.f = loadavg[1]; *seed ^= (convert.d);
convert.f = loadavg[2]; *seed ^= (convert.d >> 16);
+# else
+ GIT_UNUSED(loadavg[0]);
+# endif
convert.f = git__timer(); *seed ^= (convert.d);