- Win process control (affects API and wrapper):
Since Win doesn't have an API for process suspend/resume,
we were suspending processes by
1) enumerating all the threads in the system (typically several thousand)
2) suspending those belonging to the given process
The problem: for each thread, the code was calling a function
in diagnostics_win.cpp to see if the thread was exempted from suspension.
This check (which is unnecessary anyway if we're suspending another process)
was surrounded by a semaphore acquire/release.
The result: performance problems.
It could take a minute to suspend the threads.
Solution:
1) do the check for exemption only if we're suspending threads
in our own process (i.e. from the API)
2) if we're suspending multiple processes, enumerate the threads
only once, and see if each one belongs to any of the processes
3) have the wrapper elevate itself to normal priority.
Otherwise it can get preempted for long periods,
sometimes in the middle of scanning the threads.
Note: post-9x versions of Win have a process group API that includes suspend/resume.
We'll switch to this soon.
proc_control: controlling processes
procinfo: enumerating and querying processes
run_app_windows: launching apps as other users on Win
svn path=/trunk/boinc/; revision=24120
Win: enumerate all descendants, and kill them all TerminateProcess().
Unix:
send the main process a SIGTERM.
Check once a sec for existence of descendants.
if none, done
If any still exist after 10 sec, kill all descendants
- wrapper fix bug in Win env var stuff
- scheduler: check for VBox version 3.2+ in app_plan()
svn path=/trunk/boinc/; revision=23085
- scheduler: fix bug in adaptive replication:
if send an unreplicated job to untrusted host,
set both wu.target_nresults and wu.min_quorum to app.target_nresults.
svn path=/trunk/boinc/; revision=15762
graphics applications so that the memory can be shared across terminal
server sessions.
- API: Add some trace messages to window creation and shutdown events, it
is all logged to stderr.
- API: Add some trace messages for loading graphic files.
- API: Add some trace messages for loading font files.
- API: There can be only one hInstance and it is assigned to the app at
startup via winmain(). Use it throughout the graphics2 impl.
- CC: Use the service security token to startup worker applications.
- MGR: Use the interactive security token to startup graphics
applications.
- LIB: Create two different logon methods, one for logging on interactively
(graphics applications) and one for services (worker application).
api/
graphics2_util.C
graphics2_win.C
gutil.C
txf_util.C
client/
app_start.C
lib/
proc_control.C, .h
win_build/
boincmgr_curl.vcproj
svn path=/trunk/boinc/; revision=14905
The problem was that there's a lot of extra stuff needed
for running apps on Windows (e.g. related to sandboxing).
This needed to be a new function.
svn path=/trunk/boinc/; revision=14879