Christopher Faylor <cgf@redhat.com>

* exceptions.cc (try_to_debug): Set priority of current thread rather than the
main thread.  Make busy waiting loop less busy.  Restore priority when function
returns.
This commit is contained in:
Christopher Faylor 2003-02-07 15:00:57 +00:00
parent bc5b63edab
commit 49b84ce441
2 changed files with 14 additions and 4 deletions

View File

@ -1,3 +1,10 @@
2003-02-07 Vaclav Haisman <V.Haisman@sh.cvut.cz>
Christopher Faylor <cgf@redhat.com>
* exceptions.cc (try_to_debug): Set priority of current thread rather
than the main thread. Make busy waiting loop less busy. Restore
priority when function returns.
2003-02-07 Christopher Faylor <cgf@redhat.com>
* malloc.cc (DEFAULT_MMAP_THRESHOLD): Set high to avoid mmaps.

View File

@ -343,7 +343,8 @@ try_to_debug (bool waitloop)
__small_sprintf (strchr (debugger_command, '\0'), " %u", GetCurrentProcessId ());
SetThreadPriority (hMainThread, THREAD_PRIORITY_HIGHEST);
LONG prio = GetThreadPriority (GetCurrentThread ());
SetThreadPriority (GetCurrentThread (), THREAD_PRIORITY_HIGHEST);
PROCESS_INFORMATION pi = {NULL, 0, 0, 0};
STARTUPINFO si = {0, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL};
@ -391,15 +392,17 @@ try_to_debug (bool waitloop)
system_printf ("Failed to start debugger: %E");
else
{
SetThreadPriority (hMainThread, THREAD_PRIORITY_IDLE);
SetThreadPriority (GetCurrentThread (), THREAD_PRIORITY_IDLE);
if (!waitloop)
return 1;
while (!being_debugged ())
/* spin */;
Sleep (4000);
Sleep (0);
Sleep (2000);
small_printf ("*** continuing from debugger call\n");
}
SetThreadPriority (GetCurrentThread (), prio);
/* FIXME: need to know handles of all running threads to
resume_all_threads_except (current_thread_id);
*/