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>2010-09-01 22:24:11 +0400
committerChristopher Faylor <me@cgf.cx>2010-09-01 22:24:11 +0400
commitb9874a0c1409a238de44a2413b8a82875fd68084 (patch)
treeed19075870bced5696f7d7ed1456a784d1ba6a3b /winsup/cygwin/cygthread.h
parent20973ec94886bf3b465f94430ea3d45eaaaf43a3 (diff)
* 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.h21
1 files changed, 18 insertions, 3 deletions
diff --git a/winsup/cygwin/cygthread.h b/winsup/cygwin/cygthread.h
index 593cfdd0a..cf1fd4102 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 */