Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2001-04-25 23:11:37 +0400
committerChristopher Faylor <me@cgf.cx>2001-04-25 23:11:37 +0400
commit968d91b2e6156e84c9fa5a6534364861446549f8 (patch)
treec5d41a6fb28343ad532dd4c96cf27896568493d0 /winsup/cygwin/sigproc.h
parent86699e1555e3f8438e23530f1a0b49ff87330686 (diff)
* sigproc.h [sigthread]: Add exception field.
[sigframe::~sigframe]: Clear exception field. [sigframe::set]: Set exception field from caller. * sigproc.cc (sig_send): Set exception field when frame pointer is passed in. * exceptions.cc (interrupt_on_return): Always treat exception as interruptible.
Diffstat (limited to 'winsup/cygwin/sigproc.h')
-rw-r--r--winsup/cygwin/sigproc.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/winsup/cygwin/sigproc.h b/winsup/cygwin/sigproc.h
index 9d8a8c520..c239f5fe7 100644
--- a/winsup/cygwin/sigproc.h
+++ b/winsup/cygwin/sigproc.h
@@ -40,6 +40,7 @@ struct sigthread
DWORD frame;
CRITICAL_SECTION lock;
LONG winapi_lock;
+ BOOL exception;
bool get_winapi_lock (int test = 0);
void release_winapi_lock ();
void init (const char *s);
@@ -55,6 +56,7 @@ private:
{
EnterCriticalSection (&st->lock);
st->frame = 0;
+ st->exception = 0;
st->release_winapi_lock ();
LeaveCriticalSection (&st->lock);
st = NULL;
@@ -62,11 +64,12 @@ private:
}
public:
- void set (sigthread &t, DWORD ebp)
+ void set (sigthread &t, DWORD ebp, bool is_exception = 0)
{
DWORD oframe = t.frame;
st = &t;
t.frame = ebp;
+ t.exception = is_exception;
if (!oframe)
t.get_winapi_lock ();
}