OSDN Git Service

* debug.cc (makethread): Eliminate unneeded function call.
authorcgf <cgf>
Fri, 30 Nov 2001 06:19:56 +0000 (06:19 +0000)
committercgf <cgf>
Fri, 30 Nov 2001 06:19:56 +0000 (06:19 +0000)
* miscfuncs.cc (tls_ix): Predefine.
* perthread.h (set_reent): Eliminate.
(get_reent): Ditto.
* winbase.h (my_tlsalloc): Use global stack base pointer.  Set newly allocated
location to NULL.
(my_tlssetvalue): Use global stack base pointer.
(my_tlsgetvalue): Ditto.

winsup/cygwin/ChangeLog
winsup/cygwin/debug.cc
winsup/cygwin/miscfuncs.cc
winsup/cygwin/perthread.h
winsup/cygwin/winbase.h

index 846fc5b..ea2483b 100644 (file)
@@ -1,3 +1,14 @@
+2001-11-30  Christopher Faylor  <cgf@redhat.com>
+
+       * debug.cc (makethread): Eliminate unneeded function call.
+       * miscfuncs.cc (tls_ix): Predefine.
+       * perthread.h (set_reent): Eliminate.
+       (get_reent): Ditto.
+       * winbase.h (my_tlsalloc): Use global stack base pointer.  Set newly
+       allocated location to NULL.
+       (my_tlssetvalue): Use global stack base pointer.
+       (my_tlsgetvalue): Ditto.
+
 2001-11-27  Christopher Faylor  <cgf@redhat.com>
 
        * winsup.h: Reorganize to avoid use of experimental stuff.
index 4001306..76cce92 100644 (file)
@@ -95,7 +95,6 @@ thread_stub (VOID *arg)
      SIGSEGV or SIGFPE. */
   init_exceptions (&except_entry);
 
-  set_reent (user_data->impure_ptr);
   ExitThread (threadfunc (threadarg));
 }
 
index b93a758..5d30104 100644 (file)
@@ -12,7 +12,7 @@ details. */
 #include "cygerrno.h"
 #include <sys/errno.h>
 
-long tls_ix;
+long tls_ix = -1;
 
 const char case_folded_lower[] NO_COPY = {
    0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
index 185cc04..48ad976 100644 (file)
@@ -15,27 +15,6 @@ details. */
 struct _reent;
 extern struct _reent reent_data;
 
-extern DWORD *__stackbase __asm__ ("%fs:4");
-
-extern __inline struct _reent *
-get_reent ()
-{
-  DWORD *base = __stackbase - 1;
-
-  if (*base != PTMAGIC)
-    return &reent_data;
-  return (struct _reent *) base[-1];
-}
-
-extern inline void
-set_reent (struct _reent *r)
-{
-  DWORD *base = __stackbase - 1;
-
-  *base = PTMAGIC;
-  base[-1] = (DWORD) r;
-}
-
 #define PER_THREAD_FORK_CLEAR ((void *)0xffffffff)
 class per_thread
 {
index 801badc..d72bb08 100644 (file)
@@ -42,28 +42,27 @@ extern __inline__ long ilockexch (long *t, long v)
 #define InterlockedExchange ilockexch
 
 extern long tls_ix;
+extern char * volatile *__stackbase __asm__ ("%fs:4");
 
 extern __inline__ DWORD
 my_tlsalloc ()
 {
-  return (DWORD) ilockincr (&tls_ix);
+  DWORD n = ilockdecr (&tls_ix);
+  __stackbase[tls_ix] = NULL;
+  return n;
 }
 
 extern __inline__ BOOL
 my_tlssetvalue (DWORD ix, void *val)
 {
-  char **stackbase;
-  __asm__ volatile ("movl %%fs:4,%0": "=g" (stackbase));
-  stackbase[-ix] = (char *) val;
+  __stackbase[ix] = (char *) val;
   return 1;
 }
 
 extern __inline__ void *
 my_tlsgetvalue (DWORD ix)
 {
-  char **stackbase;
-  __asm__ volatile ("movl %%fs:4,%0": "=g" (stackbase));
-  return stackbase[-ix];
+  return __stackbase[ix];
 }
 
 extern __inline__ BOOL