* signal.cc (_raise): New function.
* exceptions.cc (unused_sig_wrapper): Remove _raise. * sigproc.h (class sigframe): Default frames to skip to zero or suffer from exuberant optimization. * fhandler_tty.cc (fhandler_tty::write): Set appropriate errno when WriteFile to pipe fails.
This commit is contained in:
parent
1b38471e5e
commit
d824bcf985
@ -1,3 +1,12 @@
|
|||||||
|
Mon Aug 28 22:03:21 2000 Christopher Faylor <cgf@cygnus.com>
|
||||||
|
|
||||||
|
* signal.cc (_raise): New function.
|
||||||
|
* exceptions.cc (unused_sig_wrapper): Remove _raise.
|
||||||
|
* sigproc.h (class sigframe): Default frames to skip to zero or suffer
|
||||||
|
from exuberant optimization.
|
||||||
|
* fhandler_tty.cc (fhandler_tty::write): Set appropriate errno when
|
||||||
|
WriteFile to pipe fails.
|
||||||
|
|
||||||
Fri Aug 25 23:44:48 2000 Christopher Faylor <cgf@cygnus.com>
|
Fri Aug 25 23:44:48 2000 Christopher Faylor <cgf@cygnus.com>
|
||||||
|
|
||||||
* pinfo.h (pinfo): Un-inline release.
|
* pinfo.h (pinfo): Un-inline release.
|
||||||
|
@ -1074,18 +1074,6 @@ void unused_sig_wrapper ()
|
|||||||
and returns to orignal caller. */
|
and returns to orignal caller. */
|
||||||
__asm__ volatile ("
|
__asm__ volatile ("
|
||||||
.text
|
.text
|
||||||
.globl __raise
|
|
||||||
__raise:
|
|
||||||
pushl %%ebp
|
|
||||||
movl %%esp,%%ebp
|
|
||||||
movl 8(%%ebp),%%eax
|
|
||||||
pushl %%eax
|
|
||||||
movl $_myself,%%eax
|
|
||||||
pushl %6(%%eax)
|
|
||||||
call __kill
|
|
||||||
mov %%ebp,%%esp
|
|
||||||
popl %%ebp
|
|
||||||
ret
|
|
||||||
|
|
||||||
_sigreturn:
|
_sigreturn:
|
||||||
addl $4,%%esp
|
addl $4,%%esp
|
||||||
|
@ -568,9 +568,17 @@ fhandler_tty_slave::write (const void *ptr, size_t len)
|
|||||||
|
|
||||||
if (WriteFile (get_output_handle (), buf, n, &n, NULL) == FALSE)
|
if (WriteFile (get_output_handle (), buf, n, &n, NULL) == FALSE)
|
||||||
{
|
{
|
||||||
|
DWORD err = GetLastError ();
|
||||||
termios_printf ("WriteFile failed, %E");
|
termios_printf ("WriteFile failed, %E");
|
||||||
towrite = (DWORD) -1;
|
switch (err)
|
||||||
|
{
|
||||||
|
case ERROR_NO_DATA:
|
||||||
|
err = ERROR_IO_DEVICE;
|
||||||
|
default:
|
||||||
|
__seterrno ();
|
||||||
|
}
|
||||||
_raise (SIGHUP); /* FIXME: Should this be SIGTTOU? */
|
_raise (SIGHUP); /* FIXME: Should this be SIGTTOU? */
|
||||||
|
towrite = (DWORD) -1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -144,6 +144,12 @@ kill_worker (pid_t pid, int sig)
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
_raise (int sig)
|
||||||
|
{
|
||||||
|
return _kill (myself->pid, sig);
|
||||||
|
}
|
||||||
|
|
||||||
/* This is called _kill because the real kill is in newlib. */
|
/* This is called _kill because the real kill is in newlib. */
|
||||||
int
|
int
|
||||||
_kill (pid_t pid, int sig)
|
_kill (pid_t pid, int sig)
|
||||||
|
@ -60,7 +60,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
sigframe () {st = NULL;}
|
sigframe () {st = NULL;}
|
||||||
sigframe (sigthread &t, int up = 1)
|
sigframe (sigthread &t, int up = 0)
|
||||||
{
|
{
|
||||||
if (!t.frame && t.id == GetCurrentThreadId ())
|
if (!t.frame && t.id == GetCurrentThreadId ())
|
||||||
set (t, up);
|
set (t, up);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user