diff options
author | Christopher Faylor <me@cgf.cx> | 2002-12-11 04:00:04 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2002-12-11 04:00:04 +0000 |
commit | 1d380f593ae54513419a7e7f31817fc23a5e69b9 (patch) | |
tree | 6997ee23c02f85f89c36ab4e7d971cd174c68869 /winsup/cygwin/cygthread.h | |
parent | ea01c7f5d25779a88d6476da8b7f780379bc0c05 (diff) | |
download | newlib-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.h | 4 |
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 () |