1*d83cc019SAndroid Build Coastguard Worker /* SPDX-License-Identifier: MIT */ 2*d83cc019SAndroid Build Coastguard Worker 3*d83cc019SAndroid Build Coastguard Worker #pragma once 4*d83cc019SAndroid Build Coastguard Worker 5*d83cc019SAndroid Build Coastguard Worker #include_next <sys/mman.h> 6*d83cc019SAndroid Build Coastguard Worker 7*d83cc019SAndroid Build Coastguard Worker #if !defined(HAVE_MEMFD_CREATE) || !HAVE_MEMFD_CREATE 8*d83cc019SAndroid Build Coastguard Worker #include <errno.h> 9*d83cc019SAndroid Build Coastguard Worker #include <sys/syscall.h> 10*d83cc019SAndroid Build Coastguard Worker #include <sys/types.h> 11*d83cc019SAndroid Build Coastguard Worker #include <unistd.h> 12*d83cc019SAndroid Build Coastguard Worker 13*d83cc019SAndroid Build Coastguard Worker #ifndef __NR_memfd_create 14*d83cc019SAndroid Build Coastguard Worker #if defined __x86_64__ 15*d83cc019SAndroid Build Coastguard Worker #define __NR_memfd_create 319 16*d83cc019SAndroid Build Coastguard Worker #elif defined __i386__ 17*d83cc019SAndroid Build Coastguard Worker #define __NR_memfd_create 356 18*d83cc019SAndroid Build Coastguard Worker #elif defined __arm__ 19*d83cc019SAndroid Build Coastguard Worker #define __NR_memfd_create 385 20*d83cc019SAndroid Build Coastguard Worker #else 21*d83cc019SAndroid Build Coastguard Worker #warning "__NR_memfd_create unknown for your architecture" 22*d83cc019SAndroid Build Coastguard Worker #endif 23*d83cc019SAndroid Build Coastguard Worker #endif 24*d83cc019SAndroid Build Coastguard Worker missing_memfd_create(const char * name,unsigned int flags)25*d83cc019SAndroid Build Coastguard Workerstatic inline int missing_memfd_create(const char *name, unsigned int flags) 26*d83cc019SAndroid Build Coastguard Worker { 27*d83cc019SAndroid Build Coastguard Worker #ifdef __NR_memfd_create 28*d83cc019SAndroid Build Coastguard Worker return syscall(__NR_memfd_create, name, flags); 29*d83cc019SAndroid Build Coastguard Worker #else 30*d83cc019SAndroid Build Coastguard Worker errno = ENOSYS; 31*d83cc019SAndroid Build Coastguard Worker return -1; 32*d83cc019SAndroid Build Coastguard Worker #endif 33*d83cc019SAndroid Build Coastguard Worker } 34*d83cc019SAndroid Build Coastguard Worker 35*d83cc019SAndroid Build Coastguard Worker #define memfd_create missing_memfd_create 36*d83cc019SAndroid Build Coastguard Worker 37*d83cc019SAndroid Build Coastguard Worker #endif 38