1*cf84ac9aSAndroid Build Coastguard Worker #ifndef _STRACE_TESTS_ACCEPT_COMPAT_H_ 2*cf84ac9aSAndroid Build Coastguard Worker #define _STRACE_TESTS_ACCEPT_COMPAT_H_ 3*cf84ac9aSAndroid Build Coastguard Worker 4*cf84ac9aSAndroid Build Coastguard Worker #include <unistd.h> 5*cf84ac9aSAndroid Build Coastguard Worker #include <sys/socket.h> 6*cf84ac9aSAndroid Build Coastguard Worker #include <asm/unistd.h> 7*cf84ac9aSAndroid Build Coastguard Worker 8*cf84ac9aSAndroid Build Coastguard Worker #if defined __NR_socketcall && defined __sparc__ 9*cf84ac9aSAndroid Build Coastguard Worker /* 10*cf84ac9aSAndroid Build Coastguard Worker * Work around the fact that 11*cf84ac9aSAndroid Build Coastguard Worker * - glibc >= 2.26 uses accept4 syscall to implement accept() call on sparc; 12*cf84ac9aSAndroid Build Coastguard Worker * - accept syscall had not been wired up on sparc until v4.4-rc8~4^2~1. 13*cf84ac9aSAndroid Build Coastguard Worker */ 14*cf84ac9aSAndroid Build Coastguard Worker static inline int do_accept(int sockfd,struct sockaddr * addr,socklen_t * addrlen)15*cf84ac9aSAndroid Build Coastguard Workerdo_accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen) 16*cf84ac9aSAndroid Build Coastguard Worker { 17*cf84ac9aSAndroid Build Coastguard Worker const long args[] = { sockfd, (long) addr, (long) addrlen }; 18*cf84ac9aSAndroid Build Coastguard Worker 19*cf84ac9aSAndroid Build Coastguard Worker return syscall(__NR_socketcall, 5, args); 20*cf84ac9aSAndroid Build Coastguard Worker } 21*cf84ac9aSAndroid Build Coastguard Worker #else 22*cf84ac9aSAndroid Build Coastguard Worker # define do_accept accept 23*cf84ac9aSAndroid Build Coastguard Worker #endif 24*cf84ac9aSAndroid Build Coastguard Worker 25*cf84ac9aSAndroid Build Coastguard Worker #endif /* !_STRACE_TESTS_ACCEPT_COMPAT_H_ */ 26