about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/afl-fuzz-init.c4
-rw-r--r--src/afl-gotcpu.c26
2 files changed, 25 insertions, 5 deletions
diff --git a/src/afl-fuzz-init.c b/src/afl-fuzz-init.c
index fab82e2d..aa413e2e 100644
--- a/src/afl-fuzz-init.c
+++ b/src/afl-fuzz-init.c
@@ -786,7 +786,7 @@ double get_runnable_processes(void) {
 
   static double res;
 
-#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__OpenBSD__)
+#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__)
 
   /* I don't see any portable sysctl or so that would quickly give us the
      number of runnable processes; the 1-minute load average can be a
@@ -827,7 +827,7 @@ double get_runnable_processes(void) {
 
   }
 
-#endif                        /* ^(__APPLE__ || __FreeBSD__ || __OpenBSD__) */
+#endif                        /* ^(__APPLE__ || __FreeBSD__ || __OpenBSD__ || __NetBSD__) */
 
   return res;
 
diff --git a/src/afl-gotcpu.c b/src/afl-gotcpu.c
index c3a60c6c..ece5a850 100644
--- a/src/afl-gotcpu.c
+++ b/src/afl-gotcpu.c
@@ -52,15 +52,18 @@
 #include "types.h"
 #include "debug.h"
 
-#if defined(__linux__) || defined(__FreeBSD__)
+#if defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__)
 #define HAVE_AFFINITY 1
 # if defined(__FreeBSD__)
 #   include <pthread.h>
 #   include <pthread_np.h>
 #   include <sys/cpuset.h>
 #   define cpu_set_t cpuset_t
+# elif defined(__NetBSD__)
+#   include <pthread.h>
+#   include <sched.h>
 # endif
-#endif                                      /* __linux__ || __FreeBSD__ */
+#endif                                      /* __linux__ || __FreeBSD__ || __NetBSD__ */
 
 /* Get unix time in microseconds. */
 
@@ -160,17 +163,34 @@ int main(int argc, char** argv) {
 
     if (!fr) {
 
-      cpu_set_t c;
       u32       util_perc;
+#if defined(__linux__) || defined(__FreeBSD__)
+      cpu_set_t c;
 
       CPU_ZERO(&c);
       CPU_SET(i, &c);
+#elif defined(__NetBSD__)
+      cpuset_t *c;
+
+      c = cpuset_create();
+      if (c == NULL)
+        PFATAL("cpuset_create failed");
+
+      cpuset_set(i, c);
+#endif
 
 #if defined(__FreeBSD__)
       if (pthread_setaffinity_np(pthread_self(), sizeof(c), &c))
         PFATAL("pthread_setaffinity_np failed");
 #endif
 
+#if defined(__NetBSD__)
+      if (pthread_setaffinity_np(pthread_self(), cpuset_size(c), c))
+        PFATAL("pthread_setaffinity_np failed");
+
+      cpuset_destroy(c);
+#endif
+
 #if defined(__linux__)
       if (sched_setaffinity(0, sizeof(c), &c))
         PFATAL("sched_setaffinity failed");