send <client_cap_plan_class/> if client understands
app version plan class.
The server checks for this instead of version > 6.11.
- clean up unix_util: .h files declare only (extern) interfaces;
no reason for daemon() to be C
svn path=/trunk/boinc/; revision=15006
- configure script:
- Added checks for functions strdup(), strdupa(),
daemon(), stat64(), strcasestr()
- Fixed problems with kc_mysql.m4 and wxWidgets.m4 returning
invalid CFLAGS and LIBS flags.
- Fixed incorrect order of pthread flag checking on solaris.
- New files: lib/unix_util.[Ch]. Currently contains implementation of
daemon() for systems that lack it.
- Access to binary files in /proc was failing on some systems when compiled
with 64 bit file access. Rearranged headers and defines to force 32bit
file access in hostinfo_unix.C
- all_tty_idle() didn't work as advertised on any system as far as I can
tell. I rewrote it to check ttys that are not named /dev/tty[1-9].
The old implementation was modifying a statically allocated read-only
string, (and crashing on some systems) anyway.
- added implementation of non-standard function strcasestr() to str_util.C
- added #define of MAP_FILE to shmem.C, because it is missing from most
unix systems, (and is unnecessary on linux anyway).
- other minor bug fixes.
svn path=/trunk/boinc/; revision=14996
in <app_version>s from the server,
keep track of the number free of each type of coproc,
and don't run an app that needs more than are available.
(not quite working yet)
svn path=/trunk/boinc/; revision=14992
and change the correspending structure field from 64KB to 256KB
(could increase this if needed).
This is needed to handle app versions with lots (> 100) of files
- change LARGE_BLOB_SIZE to BLOB_SIZE a bunch of places
- Change COPROCS from vector<COPROC> to vector<COPROC*>.
Otherwise the right virtual functions of COPROCs don't get called
svn path=/trunk/boinc/; revision=14986
this broke some projects' back-end code.
Make a new function (boinc_file_or_symlink_exists())
for use by the client when clearing out slot dirs
svn path=/trunk/boinc/; revision=14968
- update_versions: use __ (not :) as separator for plan class
- client: add plan_class to APP_VERSION;
an app version is now identified by platform/version/plan_class
- client CPU scheduler: don't assume apps use 1 CPU
- client: add avg_ncpus, max_cpus, flops, cmdline to RESULT
- scheduler: implement app planning scheme
Other changes:
- client: if symlink() fails, make a XML soft link instead
(for Unix running off a FAT32 FS)
- client: don't accept nonpositive resource share from AMS
- daemons and DB: check for error returns from enumerations,
and exit if so. Thus, if the MySQL server goes down,
all the daemons will soon exit.
The cron script will restart them every 5 min,
so when the DB server comes back up so will the project.
- web: show empty max CPU % as ---
- API: get rid of all_threads_cpu_time option (always the case now)
svn path=/trunk/boinc/; revision=14966
This will allow applications to access shared libraries
by their logical names,
which simplifies things when you have multiple platforms,
and the apps (or libraries) refer to shared libraries
by names that don't include the platform.
This shouldn't impact the API - boinc_resolve_filename()
will open the file, see that it's not an XML link file,
and the symbolic link will be used directly.
At some point we can change boinc_resolve_filename() on Unix
to be a no-op if the client is 6.2+
- client (Unix):
Append the slot dir to LD_LIBRARY_PATH.
svn path=/trunk/boinc/; revision=14944
returns an ERROR_ACCESS_DENIED error code fallback
to the original shmem_name.
api/
graphics2_util.C
lib/
shmem.C
svn path=/trunk/boinc/; revision=14911
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
them, the default ACL limits read/write access to SYSTEM and boinc_master
when run in secure mode.
lib/
boinc_win.h
shmem.C
svn path=/trunk/boinc/; revision=14903
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
The design has been changed to constant #threads per app version
Various changes from Kevin Reed/WCG:
- server: add workunit.rsc_bandwidth_bound: if nonzero,
send this WU only to hosts with that much download bandwidth
- assimilators: if a handler returns DEFER_ASSIMILATION,
the WU remains in INIT state and will be handled when the
next instance completes.
Useful if you want the assimilator to see all instances.
- scheduler: when setting result.outcome = DETACHED,
set received_time to now
- scheduler: removed the reliable_time and reliable_min_avg_credit
options
- scheduler/web: add optional <allow_non_preferred_projects>
in project preferences.
If present, user will accept work from non-selected apps
if no work is available for selected apps
- scheduler: improved messages for projects with multiple apps
- scheduler: added config options
<granted_credit_weight> and <granted_credit_ramp_up>.
Used in calculating host.claimed_credit_per_cpu_sec,
but I'm not sure how.
- Added two new credit-granting formulas (validate_util.C):
stddev_credit() and two_credit()
- server DB: add rollback_transaction() and affected_rows() to DB_CONN
NOTE: DB update required
svn path=/trunk/boinc/; revision=14870
It works, at least in my test case.
- boinc_submit script:
show status every 10 seconds until completed
add --wait option to show status for previous submission
- Added get_logical_name() in validate_util.C
- create_work: change default target_nresults from 5 to 2,
max_error_results from 10 to 3,
max_total_results from 20 to 10,
max_success_results from 10 to 6
- boinc_cmd: show full usage if no args
- project setup: copy single_job_assimilator
svn path=/trunk/boinc/; revision=14847
- MGR: CreateProcessAsUser doesn't always error out when the ACLs haven't
been changed for a specific Desktop and WindowStation so go ahead
and Modify the ACLs with every call. It appears the ACLs revert
themselves after CreateProcessAsUser is called anyway.
client/
app_start.C
lib/
util.C
svn path=/trunk/boinc/; revision=14819
and window station to whichever desktop and window station
the app launching it belongs. If access is denied then
change the ACLs on the current desktop and window station
then attempt to relaunch the application.
lib/
util.C
svn path=/trunk/boinc/; revision=14812
into a #define's symbol (ASSIGNED_WU_STR)
- scheduler: when send client command to abort a WU,
include a reason code in the scheduler log
svn path=/trunk/boinc/; revision=14798
Lets you assign a WU to a particular host,
to one or all hosts belonging to a user or team, or to all hosts.
See http://boinc.berkeley.edu/trac/wiki/AssignedWork
Disabled unless you include <enable_assignment> in config.xml
Uses a new DB table.
Tested but only a little.
- Server: code cleanup; moved result-handling to a new file,
and removed the PLATFORM_LIST arg to everything
(put it in SCHEDULER_REQUEST instead)
svn path=/trunk/boinc/; revision=14767
block for applications launched using the 'boinc_project' account.
Windows contains environment variables that describe username,
domain name, profile directory and even logon server.
- client: correctly parse domain name information from the
client_auth.xml file when a different account is used for
'boinc_master'.
- SCR/MGR: Add two API's to adjust the ACLs on the current users
desktop and windowstation so that graphics applications can
properly create controls and dialogs for applications
launched using 'boinc_project'.
client/
app_start.C
lib/
boinc_win.h
util.C, .h
lib/
win_util.C, .h
win_build/
boinc_cli_curl.vcproj
svn path=/trunk/boinc/; revision=14748
because the code to read keys in FCGI was commented out
(and was in fact wrong).
I fixed it and uncommented it.
- make_project and upgrade: copy lib/crypt_prog to project/bin/
svn path=/trunk/boinc/; revision=14693
- server: limit global prefs mod time to now
These changes address the situation where a server
sends out prefs with mod time far in the future,
and there's no way to undo them
svn path=/trunk/boinc/; revision=14664
Win2k requires any user account that is going to attempt
to logon as another account to have admin privs.
- WINSETUP: Give 'boinc_project' the right to be able to
logon as a service, we denied the right to logon
interactively.
- WINSETUP: Disable the 'failed to shutdown BOINC service'
dialog box.
- CC: Use the client_auth.xml file if present to launch
boinc applications as boinc_project if it exists.
- LIB: Use the client_auth.xml file if present to launch
boinc graphics applications as boinc_project if it
exists.
client/
app_start.C
lib/
diagnostics_win.C
lib/
util.C, .h
win_build/installerv2/redist/Windows/src/boinccas/
boinccas.rc
CACreateBOINCGroups.cpp
CACreateClientAuthFile.cpp
CAGrantBOINCMasterRights.cpp
CAGrantBOINCProjectRights.cpp
CAShutdownBOINC.cpp
win_build/installerv2/redist/Windows/Win32/
boinccas.dll
boinccas95.dll
win_build/installerv2/redist/Windows/x64/
boinccas.dll
boinccas95.dll
win_build/
boinc_ss.vcproj
boincmgr_curl.vcproj
libboinc.vcproj
svn path=/trunk/boinc/; revision=14659
messages.
Policy Change: When installed as a service or daemon, the service
or daemon manager should start BOINC, not the BOINC Manager.
(Windows Only for right now, should eventually be applied
to all platforms)
- LIB: Undue my previous change that launched graphics apps as
an idle process.
- LIB: Take care of some warnings.
clientgui/
BOINCBaseFrame.cpp, .h
BOINCClientManager.cpp, .h (Added)
BOINCGUIApp.cpp, .h
MainDocument.cpp, .h
lib/
util.C
svn path=/trunk/boinc/; revision=14647
(should this be set by default?)
- web: removed addslashes() when building language translation arrays.
These caused 's to be displayed as \' everywhere.
They may serve some purpose, but I can't think of what it is.
- web: changed max profile image dimensions from 800x600 to 640x480.
The new profile page puts a column to the right
of the image, so it shouldn't be quite that wide.
svn path=/trunk/boinc/; revision=14562
- Win diagnostics: diagnostics_dump_thread_information() had a printf
with bad format string, caused a crash, not what diagnostics should do
svn path=/trunk/boinc/; revision=14560
This is for debugging apps (currently works only in Unix).
What it does: when running an app,
the client does everything except actually fork/exec the app,
i.e. it sets up the slot dir, creates shared mem segment etc.
It then continues as if the app were actually running,
and you can then manually run your app under a debugger
in the slot directory.
Note: the client won't notice the termination of your app.
- API, Unix: in situations where the timer thread wants to exit
(e.g. it notices a missing heartbeat).
don't directly call boinc_exit(),
since this touches data structures that the worker thread
may be using concurrently.
Instead, set a flag telling the worker thread to call boinc_exit()
(which it will do from its signal handler)
This is an attempt to fix problems reported by Bernd;
I haven't tested it.
- scheduler: add config flag for uploading usage data
- web: show account key and weak account key on user page
- added some code for multithread support (not finished)
api/
boinc_api.C
svn path=/trunk/boinc/; revision=14542
(this causes confusing output in the Manager,
bytes xferred greater than file size)
- API and client: make boinc_sleep() work regardless of signals
- some code cleanup in http_curl.C
svn path=/trunk/boinc/; revision=14522
This was because SIGALRM always interrupts sleep()
and keeps boinc_sleep() stuck in its while loop.
Solution: change boinc_sleep() so that it works even if
rapid signals (e.g. interval timer) are happening
- API: remove deprecated graphics files from Makefile.
Old-style graphics are no longer supported.
- web: add empty show_user_donations_private() to donations.inc
svn path=/trunk/boinc/; revision=14513
Specifies an amount of time to delay starting apps
(e.g. so that BOINC doesn't slow down boot process)
Note: mechanisms that start BOINC at boot time
need to figure out how to set this flag.
svn path=/trunk/boinc/; revision=14445
removed references to "graphics thread"
removed HANDLE timer_quit_event
removed enable_heartbeat/disable_heartbeat messages
(not sure what the ideas was, but no longer exists)
removed heartbeat_active flag (use options.check_heartbeat instead)
read heartbeat-channel messages even if heartbeat disabled
(since we use that channel for WSS messages too)
- client: remove ACTIVE_TASK::thread_handle (not used)
svn path=/trunk/boinc/; revision=14323
not the worker signal handler.
There's no reason to call it from the signal handler -
it returns the CPU for the entire process, not the calling thread.
And it may be asynch-signal-handler-unsafe.
- API: comment out checks for bad CPU times.
I don't think this is needed now, and in some cases it's wrong
(multi-threaded apps can accumulate CPU faster than real time)
- API, Unix: in boinc_calling_thread_cpu_time(), don't retry getrusage().
- Bossa: switch to better class structure (suggested by Nicolas Alvarez).
Haven't switched to mysqli yet, but will later.
Also various other Bossa fixes
svn path=/trunk/boinc/; revision=13855
and access to worker_thread_ru.
This was being used in the worker signal handler,
which is bad because pthread_mutex_lock() can allocate memory.
I don't think this matters; at worst we might get
CPU times off by < 1 sec.
svn path=/trunk/boinc/; revision=13844
like source code and text files. I skipped to check most files in html/
and mac_*/ though.
- Added svn:executable to tools/watch_tcp because it has a shebang.
svn path=/trunk/boinc/; revision=13819
- move client sandbox-specific code to a new file, sandbox.C
- remove g_use_sandbox from util.C; move to MainDocument.cpp (manager)
and sandbox.C (client)
- don't declare check_security() in util.h; it's not in util.C
- don't call remove_project_owned_file_or_dir() in
boinc_delete_file_aux() or boinc_rmdir();
rather, at the points in the client that delete
dirs that are usually owned by boinc_projects,
call remove_project_owned_file_or_dir() first,
then clean_out_dir().
- rename boinc_exec() to switcher_exec() and move it to sandbox.C
Note: this change was sparked by needing to remove a call to getgrnam()
from boinclib, to avoid requiring the same version of glibc
on both compile and target hosts
svn path=/trunk/boinc/; revision=13784