about summary refs log tree commit diff
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2019-09-19 09:02:01 +0200
committerGitHub <noreply@github.com>2019-09-19 09:02:01 +0200
commitc29af4aeba91bfef147573e4c232d443558af427 (patch)
tree4daca87751d6966f3878be565dc911155aa95fdb
parent74a984d75f59358d07c8816e4a1329108ca1fd41 (diff)
parent48e6e3ac458a6bfbe8db2a3603945e3091a63f33 (diff)
downloadafl++-c29af4aeba91bfef147573e4c232d443558af427.tar.gz
Merge pull request #61 from devnexen/mac_os_cpu_scaling
Checking CPU scaling on MacOS
-rw-r--r--src/afl-fuzz-init.c34
1 files changed, 32 insertions, 2 deletions
diff --git a/src/afl-fuzz-init.c b/src/afl-fuzz-init.c
index e791fdde..4908626a 100644
--- a/src/afl-fuzz-init.c
+++ b/src/afl-fuzz-init.c
@@ -1479,9 +1479,39 @@ void check_cpu_governor(void) {
        "drop.\n",
        min / 1024, max / 1024);
 
-  FATAL("Suboptimal CPU scaling governor");
-#endif
+#else
+  u64   min = 0, max = 0;
+  size_t mlen = sizeof(min);
+  if (getenv("AFL_SKIP_CPUFREQ")) return;
+
+  ACTF("Checking CPU scaling governor...");
 
+  if (sysctlbyname("hw.cpufrequency_min", &min, &mlen, NULL, 0) == -1) {
+
+    WARNF("Could not check CPU min frequency");
+    return;
+
+  }
+
+  if (sysctlbyname("hw.cpufrequency_max", &max, &mlen, NULL, 0) == -1) {
+
+    WARNF("Could not check CPU max frequency");
+    return;
+
+  }
+
+  if (min == max) return;
+
+  SAYF("\n" cLRD "[-] " cRST
+       "Whoops, your system uses on-demand CPU frequency scaling, adjusted\n"
+       "    between %llu and %llu MHz.\n"
+       "    If you don't want to check those settings, set "
+       "AFL_SKIP_CPUFREQ\n"
+       "    to make afl-fuzz skip this check - but expect some performance "
+       "drop.\n",
+       min / 1024, max / 1024);
+#endif
+  FATAL("Suboptimal CPU scaling governor");
 }
 
 /* Count the number of logical CPU cores. */