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-22 07:43:47 +0300
committerChristopher Faylor <me@cgf.cx>2002-11-22 07:43:47 +0300
commit13af9a149da1a97fc7845466ce652427a0765944 (patch)
treec28aabca00a9b95671f6e3127c9dd5dda7a042db /winsup/cygwin/miscfuncs.cc
parent505746ad22f5f15466be71fafb03952587165461 (diff)
* exceptions.cc (sigthread::get_winapi_lock): Just do standard 'give up
timeslice' wait. (setup_handler): Revamp YA to attempt to deliver signal multiple times on failure rather than punting to wait_sig. * miscfuncs.cc (low_priority_sleep): Accept INFINITE sleep to mean "don't reset the priority after setting it to idle". Return previous priority. * winsup.h (SLEEP_0_STAY_LOW): Define. (low_priority_sleep): Return an int. * sigproc.h: Define WAIT_SIG_PRIORITY here. * sigproc.cc: Remove WAIT_SIG_PRIORITY definition.
Diffstat (limited to 'winsup/cygwin/miscfuncs.cc')
-rw-r--r--winsup/cygwin/miscfuncs.cc19
1 files changed, 17 insertions, 2 deletions
diff --git a/winsup/cygwin/miscfuncs.cc b/winsup/cygwin/miscfuncs.cc
index 9c7ab5434..e58565942 100644
--- a/winsup/cygwin/miscfuncs.cc
+++ b/winsup/cygwin/miscfuncs.cc
@@ -292,12 +292,27 @@ sys_mbstowcs (WCHAR *tgt, const char *src, int len)
return MultiByteToWideChar (get_cp (), 0, src, -1, tgt, len);
}
-void __stdcall
+int __stdcall
low_priority_sleep (DWORD secs)
{
HANDLE thisthread = GetCurrentThread ();
int curr_prio = GetThreadPriority (thisthread);
+ bool staylow;
+ if (secs != INFINITE)
+ staylow = false;
+ else
+ {
+ secs = 0;
+ staylow = true;
+ }
+
+ /* Force any threads in normal priority to be scheduled */
+ SetThreadPriority (thisthread, THREAD_PRIORITY_NORMAL);
+ Sleep (0);
+
SetThreadPriority (thisthread, THREAD_PRIORITY_IDLE);
Sleep (secs);
- SetThreadPriority (thisthread, curr_prio);
+ if (!staylow)
+ SetThreadPriority (thisthread, curr_prio);
+ return curr_prio;
}