Update.
authorUlrich Drepper <drepper@redhat.com>
Fri, 14 Mar 2003 23:28:23 +0000 (23:28 +0000)
committerUlrich Drepper <drepper@redhat.com>
Fri, 14 Mar 2003 23:28:23 +0000 (23:28 +0000)
2003-03-14  Ulrich Drepper  <drepper@redhat.com>

* tst-fork4.c: Use test-skeleton.c.

* pthread_create.c (start_thread): Use CALL_THREAD_FCT if defined.
* sysdeps/i386/tls.h: Define CALL_THREAD_FCT.

nptl/ChangeLog
nptl/sysdeps/i386/tls.h
nptl/tst-fork4.c

index 9d5af4ed920b7d30db7df50c415af59bbeecc87d..7d15732f287101f331ed49e657965c975d7a02b6 100644 (file)
@@ -1,3 +1,7 @@
+2003-03-14  Ulrich Drepper  <drepper@redhat.com>
+
+       * tst-fork4.c: Use test-skeleton.c.
+
 2003-03-14  Roland McGrath  <roland@redhat.com>
 
        * init.c: Fix typo "#eli" for "#else".
@@ -39,6 +43,9 @@
 
 2003-03-14  Ulrich Drepper  <drepper@redhat.com>
 
+       * pthread_create.c (start_thread): Use CALL_THREAD_FCT if defined.
+       * sysdeps/i386/tls.h: Define CALL_THREAD_FCT.
+
        * pthread_create.c (start_thread): setjmp is expected to return 0.
 
        * sysdeps/x86_64/tls.h (THREAD_GETMEM): Mark asms volatile.
index eea5e3010d0969ed245a50b6510f3574c6eeb6b9..8a1f547b833d1e272c68c53a3b353103fca0df1f 100644 (file)
@@ -352,6 +352,20 @@ union user_desc_init
        }})
 
 
+/* Call the user-provided thread function.  */
+#define CALL_THREAD_FCT(descr) \
+  ({ void *__res;                                                            \
+     int __ignore1, __ignore2;                                               \
+     asm volatile ("subl $12, %%esp\n\t"                                     \
+                  "pushl %%gs:%P4\n\t"                                       \
+                  "call *%%gs:%P3\n\t"                                       \
+                  "addl $16, %%esp"                                          \
+                  : "=a" (__res), "=c" (__ignore1), "=d" (__ignore2)         \
+                  : "i" (offsetof (struct pthread, start_routine)),          \
+                    "i" (offsetof (struct pthread, arg)));                   \
+     __res; })
+
+
 #endif /* __ASSEMBLER__ */
 
 #endif /* tls.h */
index 7f2b178e26afc96bcf3561624e36640d9ab162fa..7cb0f9c1f2bb76964328330aeb7f592aacb5b2b8 100644 (file)
@@ -24,8 +24,9 @@
 #include <sys/types.h>
 #include <sys/wait.h>
 
-int
-main (void)
+
+static int
+do_test (void)
 {
   pthread_t me = pthread_self ();
 
@@ -58,3 +59,6 @@ main (void)
 
   return 1;
 }
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"