summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2002-11-05 04:43:02 +0000
committerChristopher Faylor <me@cgf.cx>2002-11-05 04:43:02 +0000
commitd2637322384d97148007decb03d4af6f87159752 (patch)
tree6a38c7199d025cfa5054b7bf21bb17b8a369e79c
parent73f7245be241129f9fe50a06f88e0d271ad6aac7 (diff)
downloadcygnal-d2637322384d97148007decb03d4af6f87159752.tar.gz
cygnal-d2637322384d97148007decb03d4af6f87159752.tar.bz2
cygnal-d2637322384d97148007decb03d4af6f87159752.zip
* 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;