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>2002-11-05 07:43:02 +0300
committerChristopher Faylor <me@cgf.cx>2002-11-05 07:43:02 +0300
commitd2637322384d97148007decb03d4af6f87159752 (patch)
tree6a38c7199d025cfa5054b7bf21bb17b8a369e79c
parent73f7245be241129f9fe50a06f88e0d271ad6aac7 (diff)
* pinfo.cc (_pinfo::commune_send): Set priority low when sleeping, waiting for
commune completion so that we don't spin waiting for lower priority processes.
-rw-r--r--winsup/cygwin/ChangeLog6
-rw-r--r--winsup/cygwin/pinfo.cc7
2 files changed, 12 insertions, 1 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 4bffe2169..c6851787e 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,5 +1,11 @@
2002-11-04 Christopher Faylor <cgf@redhat.com>
+ * pinfo.cc (_pinfo::commune_send): Set priority low when sleeping,
+ waiting for commune completion so that we don't spin waiting for lower
+ priority processes.
+
+2002-11-04 Christopher Faylor <cgf@redhat.com>
+
* sigproc.cc (WAIT_SIG_PRIORITY): Bump to THREAD_PRIORITY_TIME_CRITICAL.
2002-11-04 Christopher Faylor <cgf@redhat.com>
diff --git a/winsup/cygwin/pinfo.cc b/winsup/cygwin/pinfo.cc
index 0f9510fda..f47e3bd2d 100644
--- a/winsup/cygwin/pinfo.cc
+++ b/winsup/cygwin/pinfo.cc
@@ -362,12 +362,17 @@ _pinfo::commune_send (DWORD code)
if (sig_send (this, __SIGCOMMUNE))
goto err;
+ /* FIXME: Need something better than an busy loop here */
bool isalive;
while ((isalive = alive ()))
if (myself->hello_pid <= 0)
break;
else
- Sleep (0);
+ {
+ DWORD prio = SetThreadPriority (GetCurrentThread (), THREAD_PRIORITY_IDLE);
+ Sleep (0);
+ SetThreadPriority (GetCurrentThread (), prio);
+ }
CloseHandle (tome);
tome = NULL;