Remove unneeded whitespace.

* cygtls.cc (_cygtls::set_state): Delete.
(_cygtls::reset_exception): Ditto.
(_cygtls::init_thread): Set initialized state directly here.
(_cygtls::push): Remove exception argument.  Don't treat exceptions specially.
* cygtls.h (_cygtls::push): Ditto.
(_cygtls::isinitialized): Don't treat exceptions specially.
(_cygtls::reset_exception): Delete.
(_cygtls::set_state): Ditto.
(_cygtls::handle_exceptions): Don't push ebp on the stack prior to calling
sig_send.  Just set incyg instead.
(_cygtls::interrupt_setup): Accommodate _cygtls::push argument change.
(_cygtls::interrupt_now): Ditto.
(setup_handler): Don't treat exceptions specially.
* gendef (longjmp): Always zero incyg flag.
This commit is contained in:
Christopher Faylor 2005-12-05 20:20:18 +00:00
parent 801d6cc753
commit 09b0109620
9 changed files with 48 additions and 50 deletions

View File

@ -1,3 +1,22 @@
2005-12-05 Christopher Faylor <cgf@timesys.com>
Remove unneeded whitespace.
* cygtls.cc (_cygtls::set_state): Delete.
(_cygtls::reset_exception): Ditto.
(_cygtls::init_thread): Set initialized state directly here.
(_cygtls::push): Remove exception argument. Don't treat exceptions
specially.
* cygtls.h (_cygtls::push): Ditto.
(_cygtls::isinitialized): Don't treat exceptions specially.
(_cygtls::reset_exception): Delete.
(_cygtls::set_state): Ditto.
(_cygtls::handle_exceptions): Don't push ebp on the stack prior to
calling sig_send. Just set incyg instead.
(_cygtls::interrupt_setup): Accommodate _cygtls::push argument change.
(_cygtls::interrupt_now): Ditto.
(setup_handler): Don't treat exceptions specially.
* gendef (longjmp): Always zero incyg flag.
2005-12-04 Corinna Vinschen <corinna@vinschen.de> 2005-12-04 Corinna Vinschen <corinna@vinschen.de>
* environ.cc (spenvs): Add "windir" as an "always export" variable * environ.cc (spenvs): Add "windir" as an "always export" variable

View File

@ -103,7 +103,7 @@ init_cygheap::manage_console_count (const char *something, int amount, bool avoi
} }
return console_count; return console_count;
} }
void void
init_cygheap::close_ctty () init_cygheap::close_ctty ()
{ {

View File

@ -59,24 +59,6 @@ _cygtls::init ()
sentry::lock.init ("sentry_lock"); sentry::lock.init ("sentry_lock");
} }
void
_cygtls::set_state (bool is_exception)
{
initialized = CYGTLS_INITIALIZED + is_exception;
}
void
_cygtls::reset_exception ()
{
if (initialized == CYGTLS_EXCEPTION)
{
#ifdef DEBUGGING
debug_printf ("resetting stack after an exception stack %p, stackptr %p", stack, stackptr);
#endif
set_state (false);
}
}
/* Two calls to get the stack right... */ /* Two calls to get the stack right... */
void void
_cygtls::call (DWORD (*func) (void *, void *), void *arg) _cygtls::call (DWORD (*func) (void *, void *), void *arg)
@ -118,8 +100,8 @@ _cygtls::init_thread (void *x, DWORD (*func) (void *, void *))
init_exception_handler (handle_exceptions); init_exception_handler (handle_exceptions);
} }
initialized = CYGTLS_INITIALIZED;
locals.exitsock = INVALID_SOCKET; locals.exitsock = INVALID_SOCKET;
set_state (false);
errno_addr = &(local_clib._errno); errno_addr = &(local_clib._errno);
if ((void *) func == (void *) cygthread::stub if ((void *) func == (void *) cygthread::stub
@ -202,14 +184,9 @@ _cygtls::remove (DWORD wait)
} }
void void
_cygtls::push (__stack_t addr, bool exception) _cygtls::push (__stack_t addr)
{ {
if (exception)
lock ();
*stackptr++ = (__stack_t) addr; *stackptr++ = (__stack_t) addr;
if (exception)
unlock ();
set_state (exception);
} }
#define BAD_IX ((size_t) -1) #define BAD_IX ((size_t) -1)

View File

@ -47,7 +47,6 @@ typedef unsigned int SOCKET;
#endif #endif
#define CYGTLS_INITIALIZED 0x43227 #define CYGTLS_INITIALIZED 0x43227
#define CYGTLS_EXCEPTION (0x43227 + true)
#define CYGTLSMAGIC "D0Ub313v31nm&G1c?"; #define CYGTLSMAGIC "D0Ub313v31nm&G1c?";
#ifndef CYG_MAX_PATH #ifndef CYG_MAX_PATH
@ -203,12 +202,9 @@ struct _cygtls
static void call2 (DWORD (*) (void *, void *), void *, void *) __attribute__ ((regparm (3))); static void call2 (DWORD (*) (void *, void *), void *, void *) __attribute__ ((regparm (3)));
static struct _cygtls *find_tls (int sig); static struct _cygtls *find_tls (int sig);
void remove (DWORD); void remove (DWORD);
void push (__stack_t, bool) __attribute__ ((regparm (3))); void push (__stack_t) __attribute__ ((regparm (2)));
__stack_t pop () __attribute__ ((regparm (1))); __stack_t pop () __attribute__ ((regparm (1)));
bool isinitialized () const {return initialized == CYGTLS_INITIALIZED || initialized == CYGTLS_EXCEPTION;} bool isinitialized () const {return initialized == CYGTLS_INITIALIZED;}
bool in_exception () const {return initialized == CYGTLS_EXCEPTION;}
void set_state (bool);
void reset_exception ();
bool interrupt_now (CONTEXT *, int, void *, struct sigaction&) bool interrupt_now (CONTEXT *, int, void *, struct sigaction&)
__attribute__((regparm(3))); __attribute__((regparm(3)));
void __stdcall interrupt_setup (int sig, void *handler, void __stdcall interrupt_setup (int sig, void *handler,

View File

@ -99,6 +99,9 @@ readdir_worker (DIR *dir, dirent *de)
} }
if (!res) if (!res)
#if 1
de->d_ino = 0;
#else
{ {
/* Compute d_ino by combining filename hash with the directory hash /* Compute d_ino by combining filename hash with the directory hash
(which was stored in dir->__d_dirhash when opendir was called). */ (which was stored in dir->__d_dirhash when opendir was called). */
@ -136,6 +139,7 @@ readdir_worker (DIR *dir, dirent *de)
} }
de->__ino32 = de->d_ino; // for legacy applications de->__ino32 = de->d_ino; // for legacy applications
} }
#endif
return res; return res;
} }

View File

@ -569,8 +569,9 @@ _cygtls::handle_exceptions (EXCEPTION_RECORD *e, exception_list *frame, CONTEXT
si.si_addr = (void *) in->Eip; si.si_addr = (void *) in->Eip;
si.si_errno = si.si_pid = si.si_uid = 0; si.si_errno = si.si_pid = si.si_uid = 0;
me.push ((__stack_t) ebp, true); me.incyg++;
sig_send (NULL, si, &me); // Signal myself sig_send (NULL, si, &me); // Signal myself
me.incyg--;
e->ExceptionFlags = 0; e->ExceptionFlags = 0;
return 0; return 0;
} }
@ -683,7 +684,7 @@ interruptible (DWORD pc)
void __stdcall void __stdcall
_cygtls::interrupt_setup (int sig, void *handler, struct sigaction& siga) _cygtls::interrupt_setup (int sig, void *handler, struct sigaction& siga)
{ {
push ((__stack_t) sigdelayed, false); push ((__stack_t) sigdelayed);
deltamask = (siga.sa_mask | SIGTOMASK (sig)) & ~SIG_NONMASKABLE; deltamask = (siga.sa_mask | SIGTOMASK (sig)) & ~SIG_NONMASKABLE;
sa_flags = siga.sa_flags; sa_flags = siga.sa_flags;
func = (void (*) (int)) handler; func = (void (*) (int)) handler;
@ -707,7 +708,7 @@ bool
_cygtls::interrupt_now (CONTEXT *ctx, int sig, void *handler, _cygtls::interrupt_now (CONTEXT *ctx, int sig, void *handler,
struct sigaction& siga) struct sigaction& siga)
{ {
push ((__stack_t) ctx->Eip, false); push ((__stack_t) ctx->Eip);
interrupt_setup (sig, handler, siga); interrupt_setup (sig, handler, siga);
ctx->Eip = pop (); ctx->Eip = pop ();
SetThreadContext (*this, ctx); /* Restart the thread in a new location */ SetThreadContext (*this, ctx); /* Restart the thread in a new location */
@ -740,11 +741,10 @@ setup_handler (int sig, void *handler, struct sigaction& siga, _cygtls *tls)
for (int i = 0; i < CALL_HANDLER_RETRY; i++) for (int i = 0; i < CALL_HANDLER_RETRY; i++)
{ {
tls->lock (); tls->lock ();
if (tls->incyg || tls->in_exception ()) if (tls->incyg)
{ {
sigproc_printf ("controlled interrupt. incyg %d, exception %d, stackptr %p, stack %p, stackptr[-1] %p", sigproc_printf ("controlled interrupt. stackptr %p, stack %p, stackptr[-1] %p",
tls->incyg, tls->in_exception (), tls->stackptr, tls->stack, tls->stackptr[-1]); tls->stackptr, tls->stack, tls->stackptr[-1]);
tls->reset_exception ();
tls->interrupt_setup (sig, handler, siga); tls->interrupt_setup (sig, handler, siga);
interrupted = true; interrupted = true;
tls->unlock (); tls->unlock ();
@ -779,9 +779,9 @@ setup_handler (int sig, void *handler, struct sigaction& siga, _cygtls *tls)
ResumeThread (hth); ResumeThread (hth);
break; break;
} }
if (tls->incyg || tls->in_exception () || tls->spinning || tls->locked ()) if (tls->incyg || tls->spinning || tls->locked ())
sigproc_printf ("incyg %d, in_exception %d, spinning %d, locked %d\n", sigproc_printf ("incyg %d, spinning %d, locked %d\n",
tls->incyg, tls->in_exception (), tls->spinning, tls->locked ()); tls->incyg, tls->spinning, tls->locked ());
else else
{ {
cx.ContextFlags = CONTEXT_CONTROL | CONTEXT_INTEGER; cx.ContextFlags = CONTEXT_CONTROL | CONTEXT_INTEGER;
@ -1052,7 +1052,7 @@ sigpacket::process ()
handler = (void *) thissig.sa_handler; handler = (void *) thissig.sa_handler;
else if (tls) else if (tls)
return 1; return 1;
else else
handler = NULL; handler = NULL;
if (si.si_signo == SIGKILL) if (si.si_signo == SIGKILL)

View File

@ -386,6 +386,8 @@ _longjmp:
movl 44(%edi),%eax # get old signal stack movl 44(%edi),%eax # get old signal stack
movl %eax,$tls::stackptr(%ebx) # restore movl %eax,$tls::stackptr(%ebx) # restore
decl $tls::stacklock(%ebx) # relinquish lock decl $tls::stacklock(%ebx) # relinquish lock
xorl %eax,%eax
movl %eax,$tls::incyg(%ebx) # we're definitely not in cygwin anymore
movl 12(%ebp),%eax movl 12(%ebp),%eax
testl %eax,%eax testl %eax,%eax

View File

@ -326,7 +326,7 @@ struct mmap_func_t
BOOL (*VirtualProtEx)(HANDLE, PVOID, SIZE_T, DWORD, PDWORD); BOOL (*VirtualProtEx)(HANDLE, PVOID, SIZE_T, DWORD, PDWORD);
}; };
mmap_func_t mmap_funcs_9x = mmap_func_t mmap_funcs_9x =
{ {
CreateMapping9x, CreateMapping9x,
MapView9x, MapView9x,
@ -334,7 +334,7 @@ mmap_func_t mmap_funcs_9x =
VirtualProtEx9x VirtualProtEx9x
}; };
mmap_func_t mmap_funcs_nt = mmap_func_t mmap_funcs_nt =
{ {
CreateMappingNT, CreateMappingNT,
MapViewNT, MapViewNT,
@ -424,7 +424,7 @@ class mmap_record
fhandler_base *alloc_fh (); fhandler_base *alloc_fh ();
void free_fh (fhandler_base *fh); void free_fh (fhandler_base *fh);
DWORD gen_protect (bool create = false) const DWORD gen_protect (bool create = false) const
{ return ::gen_protect (get_prot (), get_flags (), create); } { return ::gen_protect (get_prot (), get_flags (), create); }
DWORD gen_access () const DWORD gen_access () const
@ -1138,7 +1138,7 @@ mprotect (void *addr, size_t len, int prot)
bool ret = false; bool ret = false;
SetResourceLock (LOCK_MMAP_LIST, WRITE_LOCK | READ_LOCK, "mprotect"); SetResourceLock (LOCK_MMAP_LIST, WRITE_LOCK | READ_LOCK, "mprotect");
/* Iterate through the map, protect pages between addr and addr+len /* Iterate through the map, protect pages between addr and addr+len
in all maps. */ in all maps. */
list *map_list; list *map_list;
@ -1252,7 +1252,7 @@ mlock (const void *addr, size_t len)
requested locking region fits in. Unfortunately I don't know requested locking region fits in. Unfortunately I don't know
any function which would return the currently locked pages of any function which would return the currently locked pages of
a process (no go with NtQueryVirtualMemory). a process (no go with NtQueryVirtualMemory).
So, except for the border cases, what we do here is something So, except for the border cases, what we do here is something
really embarrassing. We raise the working set by 64K at a time really embarrassing. We raise the working set by 64K at a time
and retry, until either we fail to raise the working set size and retry, until either we fail to raise the working set size
@ -1715,7 +1715,7 @@ fixup_mmaps_after_fork (HANDLE parent)
&& (mbi.Protect == PAGE_READWRITE && (mbi.Protect == PAGE_READWRITE
|| mbi.Protect == PAGE_EXECUTE_READWRITE)) || mbi.Protect == PAGE_EXECUTE_READWRITE))
{ {
/* A PAGE_WRITECOPY page which has been written to is /* A PAGE_WRITECOPY page which has been written to is
set to PAGE_READWRITE, but that's an incompatible set to PAGE_READWRITE, but that's an incompatible
protection to set the page to. */ protection to set the page to. */
mbi.Protect &= ~PAGE_READWRITE; mbi.Protect &= ~PAGE_READWRITE;

View File

@ -693,7 +693,7 @@ cygwin_setsockopt (int fd, int level, int optname, const void *optval,
The workaround is described in KB article 248611. Add a new The workaround is described in KB article 248611. Add a new
registry DWORD value HKLM/System/CurrentControlSet/Services/... registry DWORD value HKLM/System/CurrentControlSet/Services/...
... Tcpip/Parameters/DisableUserTOSSetting, set to 0, and reboot. ... Tcpip/Parameters/DisableUserTOSSetting, set to 0, and reboot.
FIXME: Maybe we should simply fake that IP_TOS could be set FIXME: Maybe we should simply fake that IP_TOS could be set
successfully, if DisableUserTOSSetting is not set to 0 on W2K successfully, if DisableUserTOSSetting is not set to 0 on W2K
and above? */ and above? */