* 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.
This commit is contained in:
Christopher Faylor 2001-11-30 06:19:58 +00:00
parent 8569e5542e
commit 1cf0d8510a
5 changed files with 18 additions and 30 deletions

View 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.

View 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));
}

View 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,

View 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
{

View 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