summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorbje <bje>1998-10-04 22:07:33 +0000
committerbje <bje>1998-10-04 22:07:33 +0000
commit547aa11ebad61aefb3ed27028580dd6873bcc1b5 (patch)
treed657647289fe056619ad7d441be4742ea0dca7df /tests
parentd0aed2a7bfdad688de32a7c4d894590502e6bac4 (diff)
1998-10-05 Ben Elliston <bje@cygnus.com>
* tests/self.c: Remove; rename to self1.c. * tests/self1.c: This is the old self.c. * tests/self2.c: New file. Test pthread_self() with a single thread. Passes. * tests/self3.c: New file. Test pthread_self() with a couple of threads to ensure their thread IDs differ. Passes.
Diffstat (limited to 'tests')
-rw-r--r--tests/self1.c (renamed from tests/self.c)0
-rw-r--r--tests/self2.c31
-rw-r--r--tests/self3.c34
3 files changed, 65 insertions, 0 deletions
diff --git a/tests/self.c b/tests/self1.c
index 0addfc8..0addfc8 100644
--- a/tests/self.c
+++ b/tests/self1.c
diff --git a/tests/self2.c b/tests/self2.c
new file mode 100644
index 0000000..76d7b71
--- /dev/null
+++ b/tests/self2.c
@@ -0,0 +1,31 @@
+#include <pthread.h>
+/* Hack. Peer into implementation details. */
+#include <implement.h>
+#include <assert.h>
+#include <stdio.h>
+
+void *
+entry(void * arg)
+{
+ /* Like systems such as HP-UX, we can't print the value of the thread ID
+ because it's not an integral type. Instead, we'll poke our noses into
+ the pthread_t structure and dump a useful internal value. This is
+ ordinarily bad, m'kay? */
+
+ pthread_t t = pthread_self();
+ printf("my thread is %lx\n", t->win32handle);
+ return arg;
+}
+
+int
+main()
+{
+ int rc;
+ pthread_t t;
+
+ rc = pthread_create(&t, NULL, entry, NULL);
+ assert(rc == 0);
+
+ Sleep(2000);
+ return 0;
+}
diff --git a/tests/self3.c b/tests/self3.c
new file mode 100644
index 0000000..17d5ed3
--- /dev/null
+++ b/tests/self3.c
@@ -0,0 +1,34 @@
+#include <pthread.h>
+/* Hack. Peer into implementation details. */
+#include <implement.h>
+#include <assert.h>
+#include <stdio.h>
+
+void *
+entry(void * arg)
+{
+ /* Like systems such as HP-UX, we can't print the value of the thread ID
+ because it's not an integral type. Instead, we'll poke our noses into
+ the pthread_t structure and dump a useful internal value. This is
+ ordinarily bad, m'kay? */
+
+ pthread_t t = pthread_self();
+ printf("thread no. %d has id %lx\n", (int) arg, t->win32handle);
+ return 0;
+}
+
+int
+main()
+{
+ int rc;
+ pthread_t t[2];
+
+ rc = pthread_create(&t[0], NULL, entry, (void *) 1);
+ assert(rc == 0);
+
+ rc = pthread_create(&t[1], NULL, entry, (void *) 2);
+ assert(rc == 0);
+
+ Sleep(2000);
+ return 0;
+}