Update.
authorUlrich Drepper <drepper@redhat.com>
Sat, 10 Jun 2000 08:02:29 +0000 (08:02 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sat, 10 Jun 2000 08:02:29 +0000 (08:02 +0000)
* joinrace.c: New file.

linuxthreads/ChangeLog
linuxthreads/joinrace.c [new file with mode: 0644]

index faf2c43..88c866c 100644 (file)
@@ -7,6 +7,7 @@
        * join.c (pthread_join): Use nonexisting_handle instead of
        invalid_handle to test for acceptable thread handle.
        * manager.c (pthread_handle_free): Likewise.
+       * joinrace.c: New file.
        Reported by Permaine Cheung <pcheung@cygnus.com>.
 
 2000-06-08  Ulrich Drepper  <drepper@redhat.com>
diff --git a/linuxthreads/joinrace.c b/linuxthreads/joinrace.c
new file mode 100644 (file)
index 0000000..0a00355
--- /dev/null
@@ -0,0 +1,48 @@
+/* Test case by Permaine Cheung <pcheung@cygnus.com>.  */
+
+#include <errno.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+void *
+sub1 (void *arg)
+{
+  /* Nothing.  */
+  return NULL;
+}
+
+int
+main (void)
+{
+  int istatus;
+  int policy;
+  int cnt;
+  pthread_t thread1;
+  struct sched_param spresult1, sp1;
+
+  for (cnt = 0; cnt < 100; ++cnt)
+    {
+      printf ("Round %d\n", cnt);
+
+      pthread_create (&thread1, NULL, &sub1, NULL);
+      pthread_join (thread1, NULL);
+
+      istatus = pthread_getschedparam (thread1, &policy, &spresult1);
+      if (istatus != ESRCH)
+       {
+         printf ("pthread_getschedparam returns: %d\n", istatus);
+         return 1;
+       }
+
+      sp1.sched_priority = 0;
+      istatus = pthread_setschedparam (thread1, SCHED_OTHER, &sp1);
+      if (istatus != ESRCH)
+       {
+         printf ("pthread_setschedparam returns: %d\n", istatus);
+         return 2;
+       }
+    }
+
+  return 0;
+}