diff options
author | Christopher Faylor <me@cgf.cx> | 2001-04-25 19:11:37 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2001-04-25 19:11:37 +0000 |
commit | 968d91b2e6156e84c9fa5a6534364861446549f8 (patch) | |
tree | c5d41a6fb28343ad532dd4c96cf27896568493d0 /winsup/cygwin/sigproc.h | |
parent | 86699e1555e3f8438e23530f1a0b49ff87330686 (diff) | |
download | cygnal-968d91b2e6156e84c9fa5a6534364861446549f8.tar.gz cygnal-968d91b2e6156e84c9fa5a6534364861446549f8.tar.bz2 cygnal-968d91b2e6156e84c9fa5a6534364861446549f8.zip |
* 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.h | 5 |
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 (); } |