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 81e86afa3e
commit e998809fd2

View File

@ -394,7 +394,12 @@ void DiscardSystemPagesInternal(uintptr_t address, size_t length) {
// performance benefits unclear. // performance benefits unclear.
// //
// Therefore, we just do the simple thing: MADV_DONTNEED. // 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) #endif // BUILDFLAG(IS_APPLE)
} }