1570af302Sopenharmony_ci#ifndef _INTERNAL_SYSCALL_H 2570af302Sopenharmony_ci#define _INTERNAL_SYSCALL_H 3570af302Sopenharmony_ci 4570af302Sopenharmony_ci#include <features.h> 5570af302Sopenharmony_ci#include <errno.h> 6570af302Sopenharmony_ci#include <sys/syscall.h> 7570af302Sopenharmony_ci#include "syscall_arch.h" 8570af302Sopenharmony_ci 9570af302Sopenharmony_ci#ifndef SYSCALL_RLIM_INFINITY 10570af302Sopenharmony_ci#define SYSCALL_RLIM_INFINITY (~0ULL) 11570af302Sopenharmony_ci#endif 12570af302Sopenharmony_ci 13570af302Sopenharmony_ci#ifndef SYSCALL_MMAP2_UNIT 14570af302Sopenharmony_ci#define SYSCALL_MMAP2_UNIT 4096ULL 15570af302Sopenharmony_ci#endif 16570af302Sopenharmony_ci 17570af302Sopenharmony_ci#ifndef __SYSCALL_LL_PRW 18570af302Sopenharmony_ci#define __SYSCALL_LL_PRW(x) __SYSCALL_LL_O(x) 19570af302Sopenharmony_ci#endif 20570af302Sopenharmony_ci 21570af302Sopenharmony_ci#ifndef __scc 22570af302Sopenharmony_ci#define __scc(X) ((long) (X)) 23570af302Sopenharmony_citypedef long syscall_arg_t; 24570af302Sopenharmony_ci#endif 25570af302Sopenharmony_ci 26570af302Sopenharmony_cihidden long __syscall_ret(unsigned long), 27570af302Sopenharmony_ci __syscall_cp(syscall_arg_t, syscall_arg_t, syscall_arg_t, syscall_arg_t, 28570af302Sopenharmony_ci syscall_arg_t, syscall_arg_t, syscall_arg_t); 29570af302Sopenharmony_ci 30570af302Sopenharmony_ci#define __syscall1(n,a) __syscall1(n,__scc(a)) 31570af302Sopenharmony_ci#define __syscall2(n,a,b) __syscall2(n,__scc(a),__scc(b)) 32570af302Sopenharmony_ci#define __syscall3(n,a,b,c) __syscall3(n,__scc(a),__scc(b),__scc(c)) 33570af302Sopenharmony_ci#define __syscall4(n,a,b,c,d) __syscall4(n,__scc(a),__scc(b),__scc(c),__scc(d)) 34570af302Sopenharmony_ci#define __syscall5(n,a,b,c,d,e) __syscall5(n,__scc(a),__scc(b),__scc(c),__scc(d),__scc(e)) 35570af302Sopenharmony_ci#define __syscall6(n,a,b,c,d,e,f) __syscall6(n,__scc(a),__scc(b),__scc(c),__scc(d),__scc(e),__scc(f)) 36570af302Sopenharmony_ci#define __syscall7(n,a,b,c,d,e,f,g) __syscall7(n,__scc(a),__scc(b),__scc(c),__scc(d),__scc(e),__scc(f),__scc(g)) 37570af302Sopenharmony_ci 38570af302Sopenharmony_ci#define __SYSCALL_NARGS_X(a,b,c,d,e,f,g,h,n,...) n 39570af302Sopenharmony_ci#define __SYSCALL_NARGS(...) __SYSCALL_NARGS_X(__VA_ARGS__,7,6,5,4,3,2,1,0,) 40570af302Sopenharmony_ci#define __SYSCALL_CONCAT_X(a,b) a##b 41570af302Sopenharmony_ci#define __SYSCALL_CONCAT(a,b) __SYSCALL_CONCAT_X(a,b) 42570af302Sopenharmony_ci#define __SYSCALL_DISP(b,...) __SYSCALL_CONCAT(b,__SYSCALL_NARGS(__VA_ARGS__))(__VA_ARGS__) 43570af302Sopenharmony_ci 44570af302Sopenharmony_ci#define __syscall(...) __SYSCALL_DISP(__syscall,__VA_ARGS__) 45570af302Sopenharmony_ci#define syscall(...) __syscall_ret(__syscall(__VA_ARGS__)) 46570af302Sopenharmony_ci 47570af302Sopenharmony_ci#define socketcall(nm,a,b,c,d,e,f) __syscall_ret(__socketcall(nm,a,b,c,d,e,f)) 48570af302Sopenharmony_ci#define socketcall_cp(nm,a,b,c,d,e,f) __syscall_ret(__socketcall_cp(nm,a,b,c,d,e,f)) 49570af302Sopenharmony_ci 50570af302Sopenharmony_ci#define __syscall_cp0(n) (__syscall_cp)(n,0,0,0,0,0,0) 51570af302Sopenharmony_ci#define __syscall_cp1(n,a) (__syscall_cp)(n,__scc(a),0,0,0,0,0) 52570af302Sopenharmony_ci#define __syscall_cp2(n,a,b) (__syscall_cp)(n,__scc(a),__scc(b),0,0,0,0) 53570af302Sopenharmony_ci#define __syscall_cp3(n,a,b,c) (__syscall_cp)(n,__scc(a),__scc(b),__scc(c),0,0,0) 54570af302Sopenharmony_ci#define __syscall_cp4(n,a,b,c,d) (__syscall_cp)(n,__scc(a),__scc(b),__scc(c),__scc(d),0,0) 55570af302Sopenharmony_ci#define __syscall_cp5(n,a,b,c,d,e) (__syscall_cp)(n,__scc(a),__scc(b),__scc(c),__scc(d),__scc(e),0) 56570af302Sopenharmony_ci#define __syscall_cp6(n,a,b,c,d,e,f) (__syscall_cp)(n,__scc(a),__scc(b),__scc(c),__scc(d),__scc(e),__scc(f)) 57570af302Sopenharmony_ci 58570af302Sopenharmony_ci#ifdef FEATURE_PTHREAD_CANCEL 59570af302Sopenharmony_ci#define __syscall_cp(...) __SYSCALL_DISP(__syscall_cp,__VA_ARGS__) 60570af302Sopenharmony_ci#define syscall_cp(...) __syscall_ret(__syscall_cp(__VA_ARGS__)) 61570af302Sopenharmony_ci#else 62570af302Sopenharmony_ci#define __syscall_cp(...) __SYSCALL_DISP(__syscall,__VA_ARGS__) 63570af302Sopenharmony_ci#define syscall_cp(...) __syscall_ret(__syscall(__VA_ARGS__)) 64570af302Sopenharmony_ci#endif 65570af302Sopenharmony_ci 66570af302Sopenharmony_cistatic inline long __alt_socketcall(int sys, int sock, int cp, syscall_arg_t a, syscall_arg_t b, syscall_arg_t c, syscall_arg_t d, syscall_arg_t e, syscall_arg_t f) 67570af302Sopenharmony_ci{ 68570af302Sopenharmony_ci long r; 69570af302Sopenharmony_ci if (cp) r = __syscall_cp(sys, a, b, c, d, e, f); 70570af302Sopenharmony_ci else r = __syscall(sys, a, b, c, d, e, f); 71570af302Sopenharmony_ci if (r != -ENOSYS) return r; 72570af302Sopenharmony_ci#ifdef SYS_socketcall 73570af302Sopenharmony_ci if (cp) r = __syscall_cp(SYS_socketcall, sock, ((long[6]){a, b, c, d, e, f})); 74570af302Sopenharmony_ci else r = __syscall(SYS_socketcall, sock, ((long[6]){a, b, c, d, e, f})); 75570af302Sopenharmony_ci#endif 76570af302Sopenharmony_ci return r; 77570af302Sopenharmony_ci} 78570af302Sopenharmony_ci#define __socketcall(nm, a, b, c, d, e, f) __alt_socketcall(SYS_##nm, __SC_##nm, 0, \ 79570af302Sopenharmony_ci __scc(a), __scc(b), __scc(c), __scc(d), __scc(e), __scc(f)) 80570af302Sopenharmony_ci#define __socketcall_cp(nm, a, b, c, d, e, f) __alt_socketcall(SYS_##nm, __SC_##nm, 1, \ 81570af302Sopenharmony_ci __scc(a), __scc(b), __scc(c), __scc(d), __scc(e), __scc(f)) 82570af302Sopenharmony_ci 83570af302Sopenharmony_ci/* fixup legacy 16-bit junk */ 84570af302Sopenharmony_ci 85570af302Sopenharmony_ci#ifdef SYS_getuid32 86570af302Sopenharmony_ci#undef SYS_lchown 87570af302Sopenharmony_ci#undef SYS_getuid 88570af302Sopenharmony_ci#undef SYS_getgid 89570af302Sopenharmony_ci#undef SYS_geteuid 90570af302Sopenharmony_ci#undef SYS_getegid 91570af302Sopenharmony_ci#undef SYS_setreuid 92570af302Sopenharmony_ci#undef SYS_setregid 93570af302Sopenharmony_ci#undef SYS_getgroups 94570af302Sopenharmony_ci#undef SYS_setgroups 95570af302Sopenharmony_ci#undef SYS_fchown 96570af302Sopenharmony_ci#undef SYS_setresuid 97570af302Sopenharmony_ci#undef SYS_getresuid 98570af302Sopenharmony_ci#undef SYS_setresgid 99570af302Sopenharmony_ci#undef SYS_getresgid 100570af302Sopenharmony_ci#undef SYS_chown 101570af302Sopenharmony_ci#undef SYS_setuid 102570af302Sopenharmony_ci#undef SYS_setgid 103570af302Sopenharmony_ci#undef SYS_setfsuid 104570af302Sopenharmony_ci#undef SYS_setfsgid 105570af302Sopenharmony_ci#define SYS_lchown SYS_lchown32 106570af302Sopenharmony_ci#define SYS_getuid SYS_getuid32 107570af302Sopenharmony_ci#define SYS_getgid SYS_getgid32 108570af302Sopenharmony_ci#define SYS_geteuid SYS_geteuid32 109570af302Sopenharmony_ci#define SYS_getegid SYS_getegid32 110570af302Sopenharmony_ci#define SYS_setreuid SYS_setreuid32 111570af302Sopenharmony_ci#define SYS_setregid SYS_setregid32 112570af302Sopenharmony_ci#define SYS_getgroups SYS_getgroups32 113570af302Sopenharmony_ci#define SYS_setgroups SYS_setgroups32 114570af302Sopenharmony_ci#define SYS_fchown SYS_fchown32 115570af302Sopenharmony_ci#define SYS_setresuid SYS_setresuid32 116570af302Sopenharmony_ci#define SYS_getresuid SYS_getresuid32 117570af302Sopenharmony_ci#define SYS_setresgid SYS_setresgid32 118570af302Sopenharmony_ci#define SYS_getresgid SYS_getresgid32 119570af302Sopenharmony_ci#define SYS_chown SYS_chown32 120570af302Sopenharmony_ci#define SYS_setuid SYS_setuid32 121570af302Sopenharmony_ci#define SYS_setgid SYS_setgid32 122570af302Sopenharmony_ci#define SYS_setfsuid SYS_setfsuid32 123570af302Sopenharmony_ci#define SYS_setfsgid SYS_setfsgid32 124570af302Sopenharmony_ci#endif 125570af302Sopenharmony_ci 126570af302Sopenharmony_ci 127570af302Sopenharmony_ci/* fixup legacy 32-bit-vs-lfs64 junk */ 128570af302Sopenharmony_ci 129570af302Sopenharmony_ci#ifdef SYS_fcntl64 130570af302Sopenharmony_ci#undef SYS_fcntl 131570af302Sopenharmony_ci#define SYS_fcntl SYS_fcntl64 132570af302Sopenharmony_ci#endif 133570af302Sopenharmony_ci 134570af302Sopenharmony_ci#ifdef SYS_getdents64 135570af302Sopenharmony_ci#undef SYS_getdents 136570af302Sopenharmony_ci#define SYS_getdents SYS_getdents64 137570af302Sopenharmony_ci#endif 138570af302Sopenharmony_ci 139570af302Sopenharmony_ci#ifdef SYS_ftruncate64 140570af302Sopenharmony_ci#undef SYS_ftruncate 141570af302Sopenharmony_ci#undef SYS_truncate 142570af302Sopenharmony_ci#define SYS_ftruncate SYS_ftruncate64 143570af302Sopenharmony_ci#define SYS_truncate SYS_truncate64 144570af302Sopenharmony_ci#endif 145570af302Sopenharmony_ci 146570af302Sopenharmony_ci#ifdef SYS_stat64 147570af302Sopenharmony_ci#undef SYS_stat 148570af302Sopenharmony_ci#define SYS_stat SYS_stat64 149570af302Sopenharmony_ci#endif 150570af302Sopenharmony_ci 151570af302Sopenharmony_ci#ifdef SYS_fstat64 152570af302Sopenharmony_ci#undef SYS_fstat 153570af302Sopenharmony_ci#define SYS_fstat SYS_fstat64 154570af302Sopenharmony_ci#endif 155570af302Sopenharmony_ci 156570af302Sopenharmony_ci#ifdef SYS_lstat64 157570af302Sopenharmony_ci#undef SYS_lstat 158570af302Sopenharmony_ci#define SYS_lstat SYS_lstat64 159570af302Sopenharmony_ci#endif 160570af302Sopenharmony_ci 161570af302Sopenharmony_ci#ifdef SYS_statfs64 162570af302Sopenharmony_ci#undef SYS_statfs 163570af302Sopenharmony_ci#define SYS_statfs SYS_statfs64 164570af302Sopenharmony_ci#endif 165570af302Sopenharmony_ci 166570af302Sopenharmony_ci#ifdef SYS_fstatfs64 167570af302Sopenharmony_ci#undef SYS_fstatfs 168570af302Sopenharmony_ci#define SYS_fstatfs SYS_fstatfs64 169570af302Sopenharmony_ci#endif 170570af302Sopenharmony_ci 171570af302Sopenharmony_ci#if defined(SYS_newfstatat) 172570af302Sopenharmony_ci#undef SYS_fstatat 173570af302Sopenharmony_ci#define SYS_fstatat SYS_newfstatat 174570af302Sopenharmony_ci#elif defined(SYS_fstatat64) 175570af302Sopenharmony_ci#undef SYS_fstatat 176570af302Sopenharmony_ci#define SYS_fstatat SYS_fstatat64 177570af302Sopenharmony_ci#endif 178570af302Sopenharmony_ci 179570af302Sopenharmony_ci#ifdef SYS_ugetrlimit 180570af302Sopenharmony_ci#undef SYS_getrlimit 181570af302Sopenharmony_ci#define SYS_getrlimit SYS_ugetrlimit 182570af302Sopenharmony_ci#endif 183570af302Sopenharmony_ci 184570af302Sopenharmony_ci#ifdef SYS__newselect 185570af302Sopenharmony_ci#undef SYS_select 186570af302Sopenharmony_ci#define SYS_select SYS__newselect 187570af302Sopenharmony_ci#endif 188570af302Sopenharmony_ci 189570af302Sopenharmony_ci#ifdef SYS_pread64 190570af302Sopenharmony_ci#undef SYS_pread 191570af302Sopenharmony_ci#undef SYS_pwrite 192570af302Sopenharmony_ci#define SYS_pread SYS_pread64 193570af302Sopenharmony_ci#define SYS_pwrite SYS_pwrite64 194570af302Sopenharmony_ci#endif 195570af302Sopenharmony_ci 196570af302Sopenharmony_ci#ifdef SYS_fadvise64_64 197570af302Sopenharmony_ci#undef SYS_fadvise 198570af302Sopenharmony_ci#define SYS_fadvise SYS_fadvise64_64 199570af302Sopenharmony_ci#elif defined(SYS_fadvise64) 200570af302Sopenharmony_ci#undef SYS_fadvise 201570af302Sopenharmony_ci#define SYS_fadvise SYS_fadvise64 202570af302Sopenharmony_ci#endif 203570af302Sopenharmony_ci 204570af302Sopenharmony_ci#ifdef SYS_sendfile64 205570af302Sopenharmony_ci#undef SYS_sendfile 206570af302Sopenharmony_ci#define SYS_sendfile SYS_sendfile64 207570af302Sopenharmony_ci#endif 208570af302Sopenharmony_ci 209570af302Sopenharmony_ci#ifdef SYS_timer_settime32 210570af302Sopenharmony_ci#define SYS_timer_settime SYS_timer_settime32 211570af302Sopenharmony_ci#endif 212570af302Sopenharmony_ci 213570af302Sopenharmony_ci#ifdef SYS_timer_gettime32 214570af302Sopenharmony_ci#define SYS_timer_gettime SYS_timer_gettime32 215570af302Sopenharmony_ci#endif 216570af302Sopenharmony_ci 217570af302Sopenharmony_ci#ifdef SYS_timerfd_settime32 218570af302Sopenharmony_ci#define SYS_timerfd_settime SYS_timerfd_settime32 219570af302Sopenharmony_ci#endif 220570af302Sopenharmony_ci 221570af302Sopenharmony_ci#ifdef SYS_timerfd_gettime32 222570af302Sopenharmony_ci#define SYS_timerfd_gettime SYS_timerfd_gettime32 223570af302Sopenharmony_ci#endif 224570af302Sopenharmony_ci 225570af302Sopenharmony_ci#ifdef SYS_clock_settime32 226570af302Sopenharmony_ci#define SYS_clock_settime SYS_clock_settime32 227570af302Sopenharmony_ci#endif 228570af302Sopenharmony_ci 229570af302Sopenharmony_ci#ifdef SYS_clock_gettime32 230570af302Sopenharmony_ci#define SYS_clock_gettime SYS_clock_gettime32 231570af302Sopenharmony_ci#endif 232570af302Sopenharmony_ci 233570af302Sopenharmony_ci#ifdef SYS_clock_getres_time32 234570af302Sopenharmony_ci#define SYS_clock_getres SYS_clock_getres_time32 235570af302Sopenharmony_ci#endif 236570af302Sopenharmony_ci 237570af302Sopenharmony_ci#ifdef SYS_clock_nanosleep_time32 238570af302Sopenharmony_ci#define SYS_clock_nanosleep SYS_clock_nanosleep_time32 239570af302Sopenharmony_ci#endif 240570af302Sopenharmony_ci 241570af302Sopenharmony_ci#ifdef SYS_gettimeofday_time32 242570af302Sopenharmony_ci#define SYS_gettimeofday SYS_gettimeofday_time32 243570af302Sopenharmony_ci#endif 244570af302Sopenharmony_ci 245570af302Sopenharmony_ci#ifdef SYS_settimeofday_time32 246570af302Sopenharmony_ci#define SYS_settimeofday SYS_settimeofday_time32 247570af302Sopenharmony_ci#endif 248570af302Sopenharmony_ci 249570af302Sopenharmony_ci/* Ensure that the plain syscall names are defined even for "time64-only" 250570af302Sopenharmony_ci * archs. These facilitate callers passing null time arguments, and make 251570af302Sopenharmony_ci * tests for establishing which to use/fallback-to more consistent when 252570af302Sopenharmony_ci * they do need to be called with time arguments. */ 253570af302Sopenharmony_ci 254570af302Sopenharmony_ci#ifndef SYS_clock_gettime 255570af302Sopenharmony_ci#define SYS_clock_gettime SYS_clock_gettime64 256570af302Sopenharmony_ci#endif 257570af302Sopenharmony_ci 258570af302Sopenharmony_ci#ifndef SYS_clock_settime 259570af302Sopenharmony_ci#define SYS_clock_settime SYS_clock_settime64 260570af302Sopenharmony_ci#endif 261570af302Sopenharmony_ci 262570af302Sopenharmony_ci#ifndef SYS_clock_adjtime 263570af302Sopenharmony_ci#define SYS_clock_adjtime SYS_clock_adjtime64 264570af302Sopenharmony_ci#endif 265570af302Sopenharmony_ci 266570af302Sopenharmony_ci#ifndef SYS_clock_getres 267570af302Sopenharmony_ci#define SYS_clock_getres SYS_clock_getres_time64 268570af302Sopenharmony_ci#endif 269570af302Sopenharmony_ci 270570af302Sopenharmony_ci#ifndef SYS_clock_nanosleep 271570af302Sopenharmony_ci#define SYS_clock_nanosleep SYS_clock_nanosleep_time64 272570af302Sopenharmony_ci#endif 273570af302Sopenharmony_ci 274570af302Sopenharmony_ci#ifndef SYS_timer_gettime 275570af302Sopenharmony_ci#define SYS_timer_gettime SYS_timer_gettime64 276570af302Sopenharmony_ci#endif 277570af302Sopenharmony_ci 278570af302Sopenharmony_ci#ifndef SYS_timer_settime 279570af302Sopenharmony_ci#define SYS_timer_settime SYS_timer_settime64 280570af302Sopenharmony_ci#endif 281570af302Sopenharmony_ci 282570af302Sopenharmony_ci#ifndef SYS_timerfd_gettime 283570af302Sopenharmony_ci#define SYS_timerfd_gettime SYS_timerfd_gettime64 284570af302Sopenharmony_ci#endif 285570af302Sopenharmony_ci 286570af302Sopenharmony_ci#ifndef SYS_timerfd_settime 287570af302Sopenharmony_ci#define SYS_timerfd_settime SYS_timerfd_settime64 288570af302Sopenharmony_ci#endif 289570af302Sopenharmony_ci 290570af302Sopenharmony_ci#ifndef SYS_utimensat 291570af302Sopenharmony_ci#define SYS_utimensat SYS_utimensat_time64 292570af302Sopenharmony_ci#endif 293570af302Sopenharmony_ci 294570af302Sopenharmony_ci#ifdef __LITEOS__ 295570af302Sopenharmony_ci#ifndef SYS_pselect6 296570af302Sopenharmony_ci#define SYS_pselect6 SYS_pselect6_time64 297570af302Sopenharmony_ci#endif 298570af302Sopenharmony_ci#endif 299570af302Sopenharmony_ci 300570af302Sopenharmony_ci#ifndef SYS_ppoll 301570af302Sopenharmony_ci#define SYS_ppoll SYS_ppoll_time64 302570af302Sopenharmony_ci#endif 303570af302Sopenharmony_ci 304570af302Sopenharmony_ci#ifndef SYS_recvmmsg 305570af302Sopenharmony_ci#define SYS_recvmmsg SYS_recvmmsg_time64 306570af302Sopenharmony_ci#endif 307570af302Sopenharmony_ci 308570af302Sopenharmony_ci#ifndef SYS_mq_timedsend 309570af302Sopenharmony_ci#define SYS_mq_timedsend SYS_mq_timedsend_time64 310570af302Sopenharmony_ci#endif 311570af302Sopenharmony_ci 312570af302Sopenharmony_ci#ifndef SYS_mq_timedreceive 313570af302Sopenharmony_ci#define SYS_mq_timedreceive SYS_mq_timedreceive_time64 314570af302Sopenharmony_ci#endif 315570af302Sopenharmony_ci 316570af302Sopenharmony_ci/* SYS_semtimedop omitted because SYS_ipc may provide it */ 317570af302Sopenharmony_ci 318570af302Sopenharmony_ci#ifndef SYS_rt_sigtimedwait 319570af302Sopenharmony_ci#define SYS_rt_sigtimedwait SYS_rt_sigtimedwait_time64 320570af302Sopenharmony_ci#endif 321570af302Sopenharmony_ci 322570af302Sopenharmony_ci#ifndef SYS_futex 323570af302Sopenharmony_ci#define SYS_futex SYS_futex_time64 324570af302Sopenharmony_ci#endif 325570af302Sopenharmony_ci 326570af302Sopenharmony_ci#ifndef SYS_sched_rr_get_interval 327570af302Sopenharmony_ci#define SYS_sched_rr_get_interval SYS_sched_rr_get_interval_time64 328570af302Sopenharmony_ci#endif 329570af302Sopenharmony_ci 330570af302Sopenharmony_ci 331570af302Sopenharmony_ci 332570af302Sopenharmony_ci 333570af302Sopenharmony_ci/* socketcall calls */ 334570af302Sopenharmony_ci 335570af302Sopenharmony_ci#define __SC_socket 1 336570af302Sopenharmony_ci#define __SC_bind 2 337570af302Sopenharmony_ci#define __SC_connect 3 338570af302Sopenharmony_ci#define __SC_listen 4 339570af302Sopenharmony_ci#define __SC_accept 5 340570af302Sopenharmony_ci#define __SC_getsockname 6 341570af302Sopenharmony_ci#define __SC_getpeername 7 342570af302Sopenharmony_ci#define __SC_socketpair 8 343570af302Sopenharmony_ci#define __SC_send 9 344570af302Sopenharmony_ci#define __SC_recv 10 345570af302Sopenharmony_ci#define __SC_sendto 11 346570af302Sopenharmony_ci#define __SC_recvfrom 12 347570af302Sopenharmony_ci#define __SC_shutdown 13 348570af302Sopenharmony_ci#define __SC_setsockopt 14 349570af302Sopenharmony_ci#define __SC_getsockopt 15 350570af302Sopenharmony_ci#define __SC_sendmsg 16 351570af302Sopenharmony_ci#define __SC_recvmsg 17 352570af302Sopenharmony_ci#define __SC_accept4 18 353570af302Sopenharmony_ci#define __SC_recvmmsg 19 354570af302Sopenharmony_ci#define __SC_sendmmsg 20 355570af302Sopenharmony_ci 356570af302Sopenharmony_ci/* This is valid only because all socket syscalls are made via 357570af302Sopenharmony_ci * socketcall, which always fills unused argument slots with zeros. */ 358570af302Sopenharmony_ci#ifndef SYS_accept 359570af302Sopenharmony_ci#define SYS_accept SYS_accept4 360570af302Sopenharmony_ci#endif 361570af302Sopenharmony_ci 362570af302Sopenharmony_ci#ifndef SO_RCVTIMEO_OLD 363570af302Sopenharmony_ci#define SO_RCVTIMEO_OLD 20 364570af302Sopenharmony_ci#endif 365570af302Sopenharmony_ci#ifndef SO_SNDTIMEO_OLD 366570af302Sopenharmony_ci#define SO_SNDTIMEO_OLD 21 367570af302Sopenharmony_ci#endif 368570af302Sopenharmony_ci 369570af302Sopenharmony_ci#define SO_TIMESTAMP_OLD 29 370570af302Sopenharmony_ci#define SO_TIMESTAMPNS_OLD 35 371570af302Sopenharmony_ci#define SO_TIMESTAMPING_OLD 37 372570af302Sopenharmony_ci#define SCM_TIMESTAMP_OLD SO_TIMESTAMP_OLD 373570af302Sopenharmony_ci#define SCM_TIMESTAMPNS_OLD SO_TIMESTAMPNS_OLD 374570af302Sopenharmony_ci#define SCM_TIMESTAMPING_OLD SO_TIMESTAMPING_OLD 375570af302Sopenharmony_ci 376570af302Sopenharmony_ci#ifndef SIOCGSTAMP_OLD 377570af302Sopenharmony_ci#define SIOCGSTAMP_OLD 0x8906 378570af302Sopenharmony_ci#endif 379570af302Sopenharmony_ci#ifndef SIOCGSTAMPNS_OLD 380570af302Sopenharmony_ci#define SIOCGSTAMPNS_OLD 0x8907 381570af302Sopenharmony_ci#endif 382570af302Sopenharmony_ci 383570af302Sopenharmony_ci#ifdef SYS_open 384570af302Sopenharmony_ci#define __sys_open2(x,pn,fl) __syscall2(SYS_open, pn, (fl)|O_LARGEFILE) 385570af302Sopenharmony_ci#define __sys_open3(x,pn,fl,mo) __syscall3(SYS_open, pn, (fl)|O_LARGEFILE, mo) 386570af302Sopenharmony_ci#define __sys_open_cp2(x,pn,fl) __syscall_cp2(SYS_open, pn, (fl)|O_LARGEFILE) 387570af302Sopenharmony_ci#define __sys_open_cp3(x,pn,fl,mo) __syscall_cp3(SYS_open, pn, (fl)|O_LARGEFILE, mo) 388570af302Sopenharmony_ci#else 389570af302Sopenharmony_ci#define __sys_open2(x,pn,fl) __syscall3(SYS_openat, AT_FDCWD, pn, (fl)|O_LARGEFILE) 390570af302Sopenharmony_ci#define __sys_open3(x,pn,fl,mo) __syscall4(SYS_openat, AT_FDCWD, pn, (fl)|O_LARGEFILE, mo) 391570af302Sopenharmony_ci#define __sys_open_cp2(x,pn,fl) __syscall_cp3(SYS_openat, AT_FDCWD, pn, (fl)|O_LARGEFILE) 392570af302Sopenharmony_ci#define __sys_open_cp3(x,pn,fl,mo) __syscall_cp4(SYS_openat, AT_FDCWD, pn, (fl)|O_LARGEFILE, mo) 393570af302Sopenharmony_ci#endif 394570af302Sopenharmony_ci 395570af302Sopenharmony_ci#define __sys_open(...) __SYSCALL_DISP(__sys_open,,__VA_ARGS__) 396570af302Sopenharmony_ci#define sys_open(...) __syscall_ret(__sys_open(__VA_ARGS__)) 397570af302Sopenharmony_ci 398570af302Sopenharmony_ci#define __sys_open_cp(...) __SYSCALL_DISP(__sys_open_cp,,__VA_ARGS__) 399570af302Sopenharmony_ci#define sys_open_cp(...) __syscall_ret(__sys_open_cp(__VA_ARGS__)) 400570af302Sopenharmony_ci 401570af302Sopenharmony_ci#ifdef SYS_wait4 402570af302Sopenharmony_ci#define __sys_wait4(a,b,c,d) __syscall(SYS_wait4,a,b,c,d) 403570af302Sopenharmony_ci#define __sys_wait4_cp(a,b,c,d) __syscall_cp(SYS_wait4,a,b,c,d) 404570af302Sopenharmony_ci#else 405570af302Sopenharmony_cihidden long __emulate_wait4(int, int *, int, void *, int); 406570af302Sopenharmony_ci#define __sys_wait4(a,b,c,d) __emulate_wait4(a,b,c,d,0) 407570af302Sopenharmony_ci#define __sys_wait4_cp(a,b,c,d) __emulate_wait4(a,b,c,d,1) 408570af302Sopenharmony_ci#endif 409570af302Sopenharmony_ci 410570af302Sopenharmony_ci#define sys_wait4(a,b,c,d) __syscall_ret(__sys_wait4(a,b,c,d)) 411570af302Sopenharmony_ci#define sys_wait4_cp(a,b,c,d) __syscall_ret(__sys_wait4_cp(a,b,c,d)) 412570af302Sopenharmony_ci 413570af302Sopenharmony_cihidden void __procfdname(char __buf[static 15+3*sizeof(int)], unsigned); 414570af302Sopenharmony_ci 415570af302Sopenharmony_cihidden void *__vdsosym(const char *, const char *); 416570af302Sopenharmony_ci 417570af302Sopenharmony_ci#ifndef __LITEOS__ 418570af302Sopenharmony_cihidden void __get_vdso_info(); 419570af302Sopenharmony_cihidden void *__get_vdso_addr(const char *, const char *); 420570af302Sopenharmony_ci#endif 421570af302Sopenharmony_ci#endif 422