allocator: Ignore madvise ENOSYS error

Support kernels built without CONFIG_ADVISE_SYSCALLS on small
embedded devices.
This commit is contained in:
klzgrad 2022-11-12 15:13:24 +08:00
parent 46a411ea0d
commit 629fafd213

View File

@ -397,7 +397,12 @@ void DiscardSystemPagesInternal(uintptr_t address, size_t length) {
// performance benefits unclear.
//
// Therefore, we just do the simple thing: MADV_DONTNEED.
PA_PCHECK(0 == madvise(ptr, length, MADV_DONTNEED));
int ret = madvise(ptr, length, MADV_DONTNEED);
if (ret && errno == ENOSYS) {
// Ignores when the kernel is built without CONFIG_ADVISE_SYSCALLS
return;
}
PA_PCHECK(ret == 0);
#endif // BUILDFLAG(IS_APPLE)
}