aboutsummaryrefslogtreecommitdiff
path: root/winsup/cygwin/cygthread.h
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2002-12-11 04:00:04 +0000
committerChristopher Faylor <me@cgf.cx>2002-12-11 04:00:04 +0000
commit1d380f593ae54513419a7e7f31817fc23a5e69b9 (patch)
tree6997ee23c02f85f89c36ab4e7d971cd174c68869 /winsup/cygwin/cygthread.h
parentea01c7f5d25779a88d6476da8b7f780379bc0c05 (diff)
downloadnewlib-1d380f593ae54513419a7e7f31817fc23a5e69b9.zip
newlib-1d380f593ae54513419a7e7f31817fc23a5e69b9.tar.gz
newlib-1d380f593ae54513419a7e7f31817fc23a5e69b9.tar.bz2
* cygthread.h (cygthread::stack_ptr): New element.
(cygthread::detach): Accept a "wait_for_signal" argument. (cygthread::terminate_thread): New function. * cygthread.cc (cygthread::stub): Set stack pointer argument. (cygthread::terminate_thread): New function. Forcibly terminate thread. (cygthread::detach): Optionally wait for signals and kill thread when signal arrives. * exceptions.cc (signal_exit): Set signal_arrived prior to exiting to wake up anything blocking on signals. * fhandler.h (fhandler_base::set_r_no_interrupt): Change to accept bool argument. (fhandler_pipe::ready_for_read): Declare. * pipe.cc (pipeargs): New structure. (read_pipe): New thread stub wrapper for normal pipe read. (fhandler_pipe::read): Modify to call reader in a cygthread, terminating on signal, as appropriate. * select.cc (fhandler_pipe::ready_for_read): Define new function.
Diffstat (limited to 'winsup/cygwin/cygthread.h')
-rw-r--r--winsup/cygwin/cygthread.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/winsup/cygwin/cygthread.h b/winsup/cygwin/cygthread.h
index 774c656..479a068 100644
--- a/winsup/cygwin/cygthread.h
+++ b/winsup/cygwin/cygthread.h
@@ -13,6 +13,7 @@ class cygthread
HANDLE h;
HANDLE ev;
HANDLE thread_sync;
+ void *stack_ptr;
const char *__name;
LPTHREAD_START_ROUTINE func;
VOID *arg;
@@ -26,12 +27,13 @@ class cygthread
cygthread (LPTHREAD_START_ROUTINE, LPVOID, const char *);
cygthread () {};
static void init ();
- void detach ();
+ void detach (bool = false);
operator HANDLE ();
static bool is ();
void * operator new (size_t);
static cygthread *freerange ();
void exit_thread ();
+ void terminate_thread ();
static void terminate ();
bool SetThreadPriority (int nPriority) {return ::SetThreadPriority (h, nPriority);}
void zap_h ()