<div><div>From d8b52c3ac997dff046e1536d692f55cd470f72d8 Mon Sep 17 00:00:00 2001</div><div>From: ChenJingPiao <chenjingpiao@foxmail.com></div><div>Date: Thu, 27 Oct 2016 12:25:33 +0800</div><div>Subject: [PATCH] tests: check decoding of gettid syscall.</div><div><br></div><div>* tests/gettid.c: New file.</div><div>* tests/gettid.test: Likewise.</div><div>* tests/.gitignore: Add gettid.</div><div>* tests/Makefile.am (check_PROGRAMS): Likewise.</div><div>(DECODER_TESTS): Add gettid.test.</div><div>---</div><div> tests/.gitignore  |  1 +</div><div> tests/Makefile.am |  3 +++</div><div> tests/gettid.c    | 43 +++++++++++++++++++++++++++++++++++++++++++</div><div> tests/gettid.test |  7 +++++++</div><div> 4 files changed, 54 insertions(+)</div><div> create mode 100644 tests/gettid.c</div><div> create mode 100755 tests/gettid.test</div><div><br></div><div>diff --git a/tests/.gitignore b/tests/.gitignore</div><div>index 5b33416..e81819c 100644</div><div>--- a/tests/.gitignore</div><div>+++ b/tests/.gitignore</div><div>@@ -97,6 +97,7 @@ getrlimit</div><div> getrusage</div><div> getsid</div><div> getsockname</div><div>+gettid</div><div> getuid</div><div> getuid32</div><div> getxxid</div><div>diff --git a/tests/Makefile.am b/tests/Makefile.am</div><div>index 0c24969..f7caa32 100644</div><div>--- a/tests/Makefile.am</div><div>+++ b/tests/Makefile.am</div><div>@@ -156,6 +156,7 @@ check_PROGRAMS = \</div><div> <span class="Apple-tab-span" style="white-space:pre">  </span>getrusage \</div><div> <span class="Apple-tab-span" style="white-space:pre">    </span>getsid \</div><div> <span class="Apple-tab-span" style="white-space:pre">       </span>getsockname \</div><div>+<span class="Apple-tab-span" style="white-space:pre">       </span>gettid \</div><div> <span class="Apple-tab-span" style="white-space:pre">       </span>getuid \</div><div> <span class="Apple-tab-span" style="white-space:pre">       </span>getuid32 \</div><div> <span class="Apple-tab-span" style="white-space:pre">     </span>getxxid \</div><div>@@ -384,6 +385,7 @@ attach_f_p_LDADD = -lrt -lpthread $(LDADD)</div><div> clock_xettime_LDADD = -lrt $(LDADD)</div><div> count_f_LDADD = -lpthread $(LDADD)</div><div> filter_unavailable_LDADD = -lpthread $(LDADD)</div><div>+gettid_LDADD = -lpthread $(LDADD)</div><div> fstat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64</div><div> fstatat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64</div><div> ftruncate64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64</div><div>@@ -501,6 +503,7 @@ DECODER_TESTS = \</div><div> <span class="Apple-tab-span" style="white-space:pre">      </span>getrusage.test \</div><div> <span class="Apple-tab-span" style="white-space:pre">       </span>getsid.test \</div><div> <span class="Apple-tab-span" style="white-space:pre">  </span>getsockname.test \</div><div>+<span class="Apple-tab-span" style="white-space:pre">  </span>gettid.test<span class="Apple-tab-span" style="white-space:pre"> </span>\</div><div> <span class="Apple-tab-span" style="white-space:pre">      </span>getuid.test \</div><div> <span class="Apple-tab-span" style="white-space:pre">  </span>getuid32.test \</div><div> <span class="Apple-tab-span" style="white-space:pre">        </span>getxxid.test \</div><div>diff --git a/tests/gettid.c b/tests/gettid.c</div><div>new file mode 100644</div><div>index 0000000..ffcacb8</div><div>--- /dev/null</div><div>+++ b/tests/gettid.c</div><div>@@ -0,0 +1,43 @@</div><div>+#include "tests.h"</div><div>+#include <asm/unistd.h></div><div>+</div><div>+#ifdef __NR_gettid</div><div>+</div><div>+#include <stdio.h></div><div>+#include <unistd.h></div><div>+#include <pthread.h></div><div>+#include <errno.h></div><div>+</div><div>+void*</div><div>+thread(void *arg)</div><div>+{</div><div>+<span class="Apple-tab-span" style="white-space:pre">        </span>long rc;</div><div>+</div><div>+<span class="Apple-tab-span" style="white-space:pre">    </span>rc = syscall(__NR_gettid);</div><div>+<span class="Apple-tab-span" style="white-space:pre">  </span>printf("%-5ld gettid() = %ld\n", rc, rc);</div><div>+<span class="Apple-tab-span" style="white-space:pre"> </span>pthread_exit(0);</div><div>+}</div><div>+</div><div>+int</div><div>+main(void)</div><div>+{</div><div>+<span class="Apple-tab-span" style="white-space:pre">     </span>pthread_t tid;</div><div>+<span class="Apple-tab-span" style="white-space:pre">      </span>pthread_attr_t attr;</div><div>+</div><div>+<span class="Apple-tab-span" style="white-space:pre">        </span>if (pthread_attr_init(&attr) != 0)</div><div>+<span class="Apple-tab-span" style="white-space:pre">              </span>perror_msg_and_fail("pthread_attr_init");</div><div>+</div><div>+<span class="Apple-tab-span" style="white-space:pre"> </span>if (pthread_create(&tid, &attr, thread, NULL) != 0)</div><div>+<span class="Apple-tab-span" style="white-space:pre">         </span>perror_msg_and_fail("pthread_create");</div><div>+</div><div>+<span class="Apple-tab-span" style="white-space:pre">    </span>if (pthread_join(tid, NULL) != 0)</div><div>+<span class="Apple-tab-span" style="white-space:pre">           </span>perror_msg_and_fail("pthread_join");</div><div>+</div><div>+<span class="Apple-tab-span" style="white-space:pre">      </span>return 0;</div><div>+}</div><div>+</div><div>+#else</div><div>+</div><div>+SKIP_MAIN_UNDEFINED(__NR_gettid)</div><div>+</div><div>+#endif</div><div>diff --git a/tests/gettid.test b/tests/gettid.test</div><div>new file mode 100755</div><div>index 0000000..49a8a9f</div><div>--- /dev/null</div><div>+++ b/tests/gettid.test</div><div>@@ -0,0 +1,7 @@</div><div>+#!/bin/sh</div><div>+</div><div>+# Check gettid syscall decoding.</div><div>+</div><div>+. "${srcdir=.}/init.sh"</div><div>+</div><div>+run_strace_match_diff -a15 -f -qq -e trace=gettid -e signal=none</div><div>-- </div><div>2.7.4</div></div><div><br></div>