afl-gotcpu: porting to Darwin using mach API.

This commit is contained in:
David Carlier
2019-10-19 11:44:09 +01:00
parent 230c135d4e
commit 1fdb75068d

View File

@ -52,7 +52,7 @@
#include "types.h"
#include "debug.h"
#if defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__)
#if defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__APPLE__)
#define HAVE_AFFINITY 1
#if defined(__FreeBSD__)
#include <pthread.h>
@ -62,8 +62,12 @@
#elif defined(__NetBSD__)
#include <pthread.h>
#include <sched.h>
#elif defined(__APPLE__)
#include <pthread.h>
#include <mach/thread_act.h>
#include <mach/thread_policy.h>
#endif
#endif /* __linux__ || __FreeBSD__ || __NetBSD__ */
#endif /* __linux__ || __FreeBSD__ || __NetBSD__ || __APPLE__ */
/* Get unix time in microseconds. */
@ -176,6 +180,12 @@ int main(int argc, char** argv) {
if (c == NULL) PFATAL("cpuset_create failed");
cpuset_set(i, c);
#elif defined(__APPLE__)
thread_affinity_policy_data_t c = { i };
thread_port_t native_thread = pthread_mach_thread_np(pthread_self());
if (thread_policy_set(native_thread, THREAD_AFFINITY_POLICY,
(thread_policy_t)&c, 1) != KERN_SUCCESS)
PFATAL("thread_policy_set failed");
#endif
#if defined(__FreeBSD__)