mirror of
https://github.com/AFLplusplus/AFLplusplus.git
synced 2025-06-13 10:38:07 +00:00
android: prefer bigcores
This commit is contained in:
@ -184,11 +184,21 @@ void bind_to_free_cpu(void) {
|
||||
"For this platform we do not have free CPU binding code yet. If possible, please supply a PR to https://github.com/vanhauser-thc/AFLplusplus"
|
||||
#endif
|
||||
|
||||
for (i = 0; i < cpu_core_count; ++i)
|
||||
if (!cpu_used[i]) break;
|
||||
size_t cpu_start = 0;
|
||||
|
||||
try:
|
||||
#ifndef __ANDROID__
|
||||
for (i = cpu_start; i < cpu_core_count; i++)
|
||||
if (!cpu_used[i]) break;
|
||||
if (i == cpu_core_count) {
|
||||
|
||||
#else
|
||||
for (i = cpu_core_count - cpu_start - 1; i > -1; i--)
|
||||
if (!cpu_used[i]) break;
|
||||
if (i == -1) {
|
||||
|
||||
#endif
|
||||
|
||||
SAYF("\n" cLRD "[-] " cRST
|
||||
"Uh-oh, looks like all %d CPU cores on your system are allocated to\n"
|
||||
" other instances of afl-fuzz (or similar CPU-locked tasks). "
|
||||
@ -197,12 +207,11 @@ void bind_to_free_cpu(void) {
|
||||
"you are\n"
|
||||
" absolutely sure, you can set AFL_NO_AFFINITY and try again.\n",
|
||||
cpu_core_count);
|
||||
|
||||
FATAL("No more free CPU cores");
|
||||
|
||||
}
|
||||
|
||||
OKF("Found a free CPU core, binding to #%u.", i);
|
||||
OKF("Found a free CPU core, try binding to #%u.", i);
|
||||
|
||||
cpu_aff = i;
|
||||
|
||||
@ -212,22 +221,31 @@ void bind_to_free_cpu(void) {
|
||||
#elif defined(__NetBSD__)
|
||||
c = cpuset_create();
|
||||
if (c == NULL) PFATAL("cpuset_create failed");
|
||||
|
||||
cpuset_set(i, c);
|
||||
#endif
|
||||
|
||||
#if defined(__linux__)
|
||||
if (sched_setaffinity(0, sizeof(c), &c)) PFATAL("sched_setaffinity failed");
|
||||
if (sched_setaffinity(0, sizeof(c), &c)) {
|
||||
|
||||
if (cpu_start == cpu_core_count)
|
||||
PFATAL("sched_setaffinity failed for CPU %d, exit", i);
|
||||
WARNF("sched_setaffinity failed to CPU %d, trying next CPU", i);
|
||||
cpu_start++;
|
||||
goto try
|
||||
;
|
||||
|
||||
}
|
||||
|
||||
#elif defined(__FreeBSD__) || defined(__DragonFly__)
|
||||
if (pthread_setaffinity_np(pthread_self(), sizeof(c), &c))
|
||||
PFATAL("pthread_setaffinity failed");
|
||||
#elif defined(__NetBSD__)
|
||||
if (pthread_setaffinity_np(pthread_self(), cpuset_size(c), c))
|
||||
PFATAL("pthread_setaffinity failed");
|
||||
if (pthread_setaffinity_np(pthread_self(), cpuset_size(c), c))
|
||||
PFATAL("pthread_setaffinity failed");
|
||||
|
||||
cpuset_destroy(c);
|
||||
cpuset_destroy(c);
|
||||
#else
|
||||
// this will need something for other platforms
|
||||
// this will need something for other platforms
|
||||
#endif
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user