diff options
author | Christopher Faylor <me@cgf.cx> | 2010-09-01 18:24:11 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2010-09-01 18:24:11 +0000 |
commit | b9874a0c1409a238de44a2413b8a82875fd68084 (patch) | |
tree | ed19075870bced5696f7d7ed1456a784d1ba6a3b /winsup/cygwin/cygthread.h | |
parent | 20973ec94886bf3b465f94430ea3d45eaaaf43a3 (diff) | |
download | newlib-b9874a0c1409a238de44a2413b8a82875fd68084.zip newlib-b9874a0c1409a238de44a2413b8a82875fd68084.tar.gz newlib-b9874a0c1409a238de44a2413b8a82875fd68084.tar.bz2 |
* cygthread.cc (cygthread::create): Fix incorrect use of name rather than
__name.
* cygthread.h (cygthread::cygthread): Create versions which eliminate 'n'
parameter.
* dcrt0.cc (dll_crt0_1): Remove check for threadfunc_ix. Remove obsolete
comments. Set process_state to active here.
* fhandler_netdrive.cc (create_thread_and_wait): Use shortened cygthread
constructor.
* timer.cc (timer_tracker::settime): Ditto.
* window.cc (HWND): Ditto.
* fhandler_tty.cc: Use shortened cygthread constructor, where appropriate,
throughout.
* select.cc: Ditto.
* fork.cc (frok::child): Remove wait_for_sigthread.
(fork): Reformat if for slightly better clarity.
* init.cc (dll_finished_loading): New variable.
(dll_entry): Use dll_finished_loading to determine when we should call
merge_threadfunc.
* sigproc.cc (no_signals_available): Simplify by using my_readsig.
(wait_sig_inited): Delete.
(wait_sig): Define as void function.
(pending_signals): Accommodate change to wait_sig definition.
(wait_for_sigthread): Delete definition.
(sigproc_init): Initialize signal pipe here, before wait_sig thread is created.
Use void form of cygthread creation.
(init_sig_pipe): Delete.
(wait_sig): Return void rather than DWORD. Assume previous initialization of
signal pipe. Set my_sendsig to NULL when exiting.
* sigproc.h (wait_for_sigthread): Delete declaration.
Diffstat (limited to 'winsup/cygwin/cygthread.h')
-rw-r--r-- | winsup/cygwin/cygthread.h | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/winsup/cygwin/cygthread.h b/winsup/cygwin/cygthread.h index 593cfdd..cf1fd41 100644 --- a/winsup/cygwin/cygthread.h +++ b/winsup/cygwin/cygthread.h @@ -31,7 +31,8 @@ class cygthread bool is_freerange; static bool exiting; HANDLE notify_detached; - void create () __attribute__ ((regparm(1))); + bool standalone; + void create () __attribute__ ((regparm(2))); public: bool terminate_thread (); static DWORD WINAPI stub (VOID *); @@ -42,13 +43,27 @@ class cygthread void auto_release () {func = NULL;} void release (bool); cygthread (LPTHREAD_START_ROUTINE start, unsigned n, LPVOID param, const char *name, HANDLE notify = NULL) - : __name (name), func (start), arglen (n), arg (param), notify_detached (notify) + : __name (name), func (start), arglen (n), arg (param), notify_detached (notify), standalone (false) + { + create (); + } + cygthread (LPVOID_THREAD_START_ROUTINE start, LPVOID param, const char *name, HANDLE notify = NULL) + : __name (name), func ((LPTHREAD_START_ROUTINE) start), arglen (0), + arg (param), notify_detached (notify), standalone (true) + { + create (); + /* This is a neverending/high-priority thread */ + ::SetThreadPriority (h, THREAD_PRIORITY_HIGHEST); + zap_h (); + } + cygthread (LPTHREAD_START_ROUTINE start, LPVOID param, const char *name, HANDLE notify = NULL) + : __name (name), func (start), arglen (0), arg (param), notify_detached (notify), standalone (false) { create (); } cygthread (LPVOID_THREAD_START_ROUTINE start, unsigned n, LPVOID param, const char *name, HANDLE notify = NULL) : __name (name), func ((LPTHREAD_START_ROUTINE) start), arglen (n), - arg (param), notify_detached (notify) + arg (param), notify_detached (notify), standalone (true) { create (); /* This is a neverending/high-priority thread */ |