* 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:
parent
8569e5542e
commit
1cf0d8510a
|
@ -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.
|
||||
|
|
|
@ -95,7 +95,6 @@ thread_stub (VOID *arg)
|
|||
SIGSEGV or SIGFPE. */
|
||||
init_exceptions (&except_entry);
|
||||
|
||||
set_reent (user_data->impure_ptr);
|
||||
ExitThread (threadfunc (threadarg));
|
||||
}
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue