xref: /aosp_15_r20/external/igt-gpu-tools/lib/stubs/syscalls/sys/mman.h (revision d83cc019efdc2edc6c4b16e9034a3ceb8d35d77c)
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 Worker static 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