summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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;