summaryrefslogtreecommitdiff
path: root/tests/accept.c
diff options
context:
space:
mode:
authorEugene Syromyatnikov <evgsyr@gmail.com>2018-02-08 11:58:30 +0100
committerDmitry V. Levin <ldv@altlinux.org>2018-02-09 20:11:53 +0000
commita9512e5779d4fea80380931347ce8938e1c424d6 (patch)
tree68251ff660bd3116a1b6518c5fcaf866992f02da /tests/accept.c
parent9fcaf3bd888dc5fefb3b69560ea330a2fc18f47f (diff)
downloadstrace-a9512e5779d4fea80380931347ce8938e1c424d6.tar.gz
tests/accept.c: call accept syscall directly, if available
* tests/accept.c [__NR_accept && !TEST_SYSCALL_NAME]: Define a wrapper that calls accept directly. * tests/sockname.c [TEST_SYSCALL_STR]: Do not define TEST_SYSCALL_STR.
Diffstat (limited to 'tests/accept.c')
-rw-r--r--tests/accept.c31
1 files changed, 28 insertions, 3 deletions
diff --git a/tests/accept.c b/tests/accept.c
index 8d42ba156..b96023d34 100644
--- a/tests/accept.c
+++ b/tests/accept.c
@@ -27,9 +27,34 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef TEST_SYSCALL_NAME
-# define TEST_SYSCALL_NAME accept
-#endif
+#include "tests.h"
+
+#include <unistd.h>
+
+#include <asm/unistd.h>
+
+#if defined __NR_accept
+
+# ifndef TEST_SYSCALL_NAME
+# define TEST_SYSCALL_NAME do_accept
+
+# ifndef TEST_SYSCALL_STR
+# define TEST_SYSCALL_STR "accept"
+# endif
+
+int do_accept(int sockfd, void *addr, void *addrlen)
+{
+ return syscall(__NR_accept, sockfd, addr, addrlen);
+}
+# endif /* !TEST_SYSCALL_NAME */
+
+#else /* !__NR_accept */
+
+# ifndef TEST_SYSCALL_NAME
+# define TEST_SYSCALL_NAME accept
+# endif
+
+#endif /* __NR_accept */
#define TEST_SYSCALL_PREPARE connect_un()
static void connect_un(void);