26 lines
		
	
	
		
			661 B
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			661 B
		
	
	
	
		
			C
		
	
	
	
| #ifndef _STRACE_TESTS_ACCEPT_COMPAT_H_
 | |
| #define _STRACE_TESTS_ACCEPT_COMPAT_H_
 | |
| 
 | |
| #include <unistd.h>
 | |
| #include <sys/socket.h>
 | |
| #include <asm/unistd.h>
 | |
| 
 | |
| #if defined __NR_socketcall && defined __sparc__
 | |
| /*
 | |
|  * Work around the fact that
 | |
|  * - glibc >= 2.26 uses accept4 syscall to implement accept() call on sparc;
 | |
|  * - accept syscall had not been wired up on sparc until v4.4-rc8~4^2~1.
 | |
|  */
 | |
| static inline int
 | |
| do_accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
 | |
| {
 | |
| 	const long args[] = { sockfd, (long) addr, (long) addrlen };
 | |
| 
 | |
| 	return syscall(__NR_socketcall, 5, args);
 | |
| }
 | |
| #else
 | |
| # define do_accept accept
 | |
| #endif
 | |
| 
 | |
| #endif /* !_STRACE_TESTS_ACCEPT_COMPAT_H_ */
 |