tests: check decoding of gettid syscall.

ChenJingPiao chenjingpiao at foxmail.com
Thu Oct 27 05:03:36 UTC 2016


From d8b52c3ac997dff046e1536d692f55cd470f72d8 Mon Sep 17 00:00:00 2001
From: ChenJingPiao <chenjingpiao at foxmail.com>
Date: Thu, 27 Oct 2016 12:25:33 +0800
Subject: [PATCH] tests: check decoding of gettid syscall.


* tests/gettid.c: New file.
* tests/gettid.test: Likewise.
* tests/.gitignore: Add gettid.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add gettid.test.
---
 tests/.gitignore  |  1 +
 tests/Makefile.am |  3 +++
 tests/gettid.c    | 43 +++++++++++++++++++++++++++++++++++++++++++
 tests/gettid.test |  7 +++++++
 4 files changed, 54 insertions(+)
 create mode 100644 tests/gettid.c
 create mode 100755 tests/gettid.test


diff --git a/tests/.gitignore b/tests/.gitignore
index 5b33416..e81819c 100644
--- a/tests/.gitignore
+++ b/tests/.gitignore
@@ -97,6 +97,7 @@ getrlimit
 getrusage
 getsid
 getsockname
+gettid
 getuid
 getuid32
 getxxid
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 0c24969..f7caa32 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -156,6 +156,7 @@ check_PROGRAMS = \
 	getrusage \
 	getsid \
 	getsockname \
+	gettid \
 	getuid \
 	getuid32 \
 	getxxid \
@@ -384,6 +385,7 @@ attach_f_p_LDADD = -lrt -lpthread $(LDADD)
 clock_xettime_LDADD = -lrt $(LDADD)
 count_f_LDADD = -lpthread $(LDADD)
 filter_unavailable_LDADD = -lpthread $(LDADD)
+gettid_LDADD = -lpthread $(LDADD)
 fstat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 fstatat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 ftruncate64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
@@ -501,6 +503,7 @@ DECODER_TESTS = \
 	getrusage.test \
 	getsid.test \
 	getsockname.test \
+	gettid.test	\
 	getuid.test \
 	getuid32.test \
 	getxxid.test \
diff --git a/tests/gettid.c b/tests/gettid.c
new file mode 100644
index 0000000..ffcacb8
--- /dev/null
+++ b/tests/gettid.c
@@ -0,0 +1,43 @@
+#include "tests.h"
+#include <asm/unistd.h>
+
+#ifdef __NR_gettid
+
+#include <stdio.h>
+#include <unistd.h>
+#include <pthread.h>
+#include <errno.h>
+
+void*
+thread(void *arg)
+{
+	long rc;
+
+	rc = syscall(__NR_gettid);
+	printf("%-5ld gettid() = %ld\n", rc, rc);
+	pthread_exit(0);
+}
+
+int
+main(void)
+{
+	pthread_t tid;
+	pthread_attr_t attr;
+
+	if (pthread_attr_init(&attr) != 0)
+		perror_msg_and_fail("pthread_attr_init");
+
+	if (pthread_create(&tid, &attr, thread, NULL) != 0)
+		perror_msg_and_fail("pthread_create");
+
+	if (pthread_join(tid, NULL) != 0)
+		perror_msg_and_fail("pthread_join");
+
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED(__NR_gettid)
+
+#endif
diff --git a/tests/gettid.test b/tests/gettid.test
new file mode 100755
index 0000000..49a8a9f
--- /dev/null
+++ b/tests/gettid.test
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# Check gettid syscall decoding.
+
+. "${srcdir=.}/init.sh"
+
+run_strace_match_diff -a15 -f -qq -e trace=gettid -e signal=none
-- 
2.7.4
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.strace.io/pipermail/strace-devel/attachments/20161027/baac4776/attachment.html>


More information about the Strace-devel mailing list