summaryrefslogtreecommitdiff
path: root/test/unistd/tst-gettid.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/unistd/tst-gettid.c')
-rw-r--r--test/unistd/tst-gettid.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/test/unistd/tst-gettid.c b/test/unistd/tst-gettid.c
new file mode 100644
index 0000000..996ae15
--- /dev/null
+++ b/test/unistd/tst-gettid.c
@@ -0,0 +1,39 @@
+#define _GNU_SOURCE
+#include <stdio.h>
+#include <unistd.h>
+#include <pthread.h>
+#include <stdlib.h>
+
+void *thread_func(void *arg)
+{
+ printf("Thread %ld:\n", (long)arg);
+ printf(" PID = %d\n", getpid());
+ printf(" TID = %d (gettid)\n", gettid());
+ printf(" pthread ID = %lu\n\n", pthread_self());
+ return NULL;
+}
+
+int main(void)
+{
+ const int NUM_THREADS = 3;
+ pthread_t threads[NUM_THREADS];
+
+ printf("Main thread:\n");
+ printf(" PID = %d\n", getpid());
+ printf(" TID = %d (gettid)\n", gettid());
+ printf(" pthread ID = %lu\n\n", pthread_self());
+
+ for (long i = 0; i < NUM_THREADS; i++) {
+ if (pthread_create(&threads[i], NULL, thread_func, (void *)i) != 0) {
+ perror("pthread_create");
+ exit(EXIT_FAILURE);
+ }
+ }
+
+ for (int i = 0; i < NUM_THREADS; i++) {
+ pthread_join(threads[i], NULL);
+ }
+
+ return 0;
+}
+