Created a new executive job that waits for threads to finish and readies them
for their next frame of execution. Created a new job class system_thread_sync
after the top of frame jobs and before the input processor is run to sync the
threads. Along the way cleaned up instrumentation jobs on the threads to fix#290.
The character string used in the frame log needs to be stored as
a character string. We were using a sprintf with a fixed size buffer.
The easiest change was to use asprintf which allocates a character
string big enough to hold the contents of the print. We need to
save this char string as a char string so it works out.
Verified all documentation deleted with this issue resides on
our wiki. Nothing is lost. Modified the doxygen makefile and
main page to point to the wiki where the user's guide used to be.
TODO: Need to move the requirements and design doxygen files.
The return code from parsing the monte carlo input was always set to zero and not checked.
Retured the return code from parsing the input. Added an exit if the input was not parsed
correctly.
Removed the redefinition. Included climits and changed HOST_NAME_MAX to _POSIX_HOST_NAME_MAX
which should be defined on the systems we support.
refs #265
Side effect of GSL included by default is that the monte carlo
test code needs to know that. The test code did not include the HAVE_GSL
flag correctly, causing the tests to fail. Fixed it.
refs #260
Fixed the configure script to allow the user to specify using a python3
interpreter. Had to change the the way to load the swig generated python modules.
Also had to change code dealing with python strings, oct, long, and
boolean operations.
refs #258
Unit tests failed sometimes. Found that an attributes structure for time
in the data recording class was unintialized. This led to the mods
field to have random data, and sometimes triggering sys.exec.out.time
to be assigned no units. Fixed it by zeroing out the structure.
refs #254
Used the mods field in the attributes to indicate of "--" was specified in the header file. We
still save the units as "1" to keep it compatible with udunits. When outputting the variable
in data recording or variable server we check to see if the mods field for "--" is set. We
output "--" if the mods field is set. Also allowed "--" to persist in data products.
refs #254
Changed Trick::Executive::get_current_version to return a const reference
to the string that holds the version. This avoids a copy of the string object
and avoids that object going out of scope. As a string, the debug_command
had the same problem so I fixed that one as well.
refs #252
Copied the units_conv.c from 15 that includes the new units to master.
Swept through the code removing includes to Unit.hh and UCF.h where they
are no longer needed. Remade makefile dependencies.
refs #231
Initial checkin of using udunits for measurement units conversions. Replaced
our conversion code in ICG and swig code to use udunits.
Also added code to convert unit symbols that we used in Trick that are different
names in udunits.
Added a sim_object that will eventually allow users to specify a custom
set of files to read units information.
refs #231
Overrode the write_data routine for HDF5 recording. The new routine writes
out all buffered values of an individual variable with one or two HDF5 calls.
This is much more efficient than before where we were making an HDF5 call
for a single value.
refs #188
Added a test to set the debugger command to gdb or lldb depending
on availability. Created a new script for lldb to run. Modified
the script for gdb to backtrace all threads.
refs #227
Added mutexes in the variable server listener thread and each variable server thread.
During checkpoint restart all of these mutexes are locked by the master thread to
stop accepting new connections and stop all read/writing to all variable server clients.
Communication is resumed after the checkpoint has been reloaded.
refs #168
Removed the catches for std:exceptions and unknown exceptions. The best way
I found to provide a clue to where the exception comes from is to allow the
handler for unhandled exceptions execute. This is std::terminate which calls
abort and trips a SIGABRT. I added a signal handler for SIGABRT which like
SIGSEGV, we can print a stack trace or attach a debugger to the process before
exiting. The stack trace print is on by default. By default the signal
handler is on, stack trace is on, debugger is off.
refs #220
Modified ICG to save the non-canonical name for STLs. This is typically more readable
because it is shorter. Added code to the variable server to filter out requests accessing
STLs, because those accesses will not currently work.
refs #206
When we parse header files and find std::basic_string we change that to std::string.
Added a check for std::__cxx11::basic_string to do the same. We also carry a
list of STL names, added std::__cxx11::[template_name] to the list of possilbe STL
names we are searching for.
refs #214
Fixing the unit tests that broke because of my changes. Memory
Manager tests need to be compiled with c++11, and the STL unit test
was using a variable that did not exist anymore.
[Issue: x]
The typenames on the Mac need to be converted for strings. The
templates are genererating the long form of the string type name. I
wrote a function to catch test the template parameter types and
return std::string.
refs #206
Initial checkin of STL checkpointing. This checkin only covers the sequential
STLs, vector, list, deque, set, and multiset. This checkin does include the
changes in Trick header files to include/exclude our STLs properly to make a
restartable checkpoint.
refs #206
Moved the lock memory function to the real time sync directory. It doesn't need
to be part of the RealTimeSync class either so I left the lock/unlock code
in the C language calls for real time functions.
refs #195
Added a flag called validate_address to each variable server thread. When
activated each pointer address will be tested to see if it is in memory
the memory manager is tracking. If it is then everything proceeds normally.
If it does not, then an error return value is returned for the value of this
variable.
refs #193
OK, all the previous checkins were the wrong way to fix this issue. The SWIG
compactdefaultargs feature and the shadow feature clash for our DRBinary class.
I turn off compactdefaultargs for the DRBinary class, leaving it on for
everything else.
refs #176
Saved the timestamps on the default gettimeofday clock as close to
the beginning of the simulation, after initialization is finished and
at the end of shutdown. Printed out the elapsed time as well as
the number of overruns counted by RealtimeSync.
refs #183
Taking in the latest er7_utils directory and adding it into Trick in the
same location it was as an external repository. Made one change to
the files_to_ICG.hh file in the repository to remove the CheckpointHelper
header files. Those go in the Trick files_to_ICG.hh file.
refs #180
Setting the frame log size only resized the time line graph, not the normal
frame log groups. Added code to change the size of the normal frame log
groups in addition to the time line.
refs #177
Duplicating change from 15.1.1.
If a variable resolves to a class/structure type the variable server tries to free the
attributes associated with that variable name. But the attributes usually point to
a fixed place in memory that is not allocated. I removed the free statement. I don't
believe this will lead to a memory leak.
refs #165
Added a time variable that is in seconds. A created a special case
for var_add if you add "time" then this variable will be added to
the list of variables returned.
trick.var_add("time")
refs #151
Added a loop to set each 1024th byte in the recording array to 1 once the
memory has been allocated. Need to test if this is good enough to get Linux
to allocate the memory.
Added a current recording buffer pointer to use instead of using array offsets.
This should be more cpu cache efficient.
Changed the memcpy calls to direct casted integer assignments based on the size of the
parameter. If the parameter is not size 1,2,4,or 8 we fall back to a memcpy.
refs #155
Updated the directory names in the doxygen files to match the new directory locations
of our source code files. The documentation builds now. But we still need to
remove the duplicate documentation that is now in the wiki, because the wiki is
more up to date.
refs #158
When allocating a new event, if the same name is used, no allocation is
created and NULL is returned. We start trying to use the returned value
which seg-faulted. I added a check to only continue if the returned value
from the allocation is not NULL.
refs #149
Created a thread trigger container class to hold all of the various thread triggering
mechanisms. I wanted to avoid allocating/freeing trigger mechanisms. I added
an eventfd and futex trigger types. Updated SIM_threads_simple test sim to use
show how to set the thread trigger type.
refs #148
Did two things to stop the crash. 1. When following an address path if we hit a NULL
address, stop processing and return the NULL. 2. When trying to resolve addresses in
copy_sim_data, if a NULL address is returned then reset the reference to unresolved and
return a dummy value.
Need to fix MTV to handle dummy value returns.
refs #117
Added enable/disable methods to the SimObject base class. Used
enable/disable to be consistent with the JobData class that already
had these defined.
fixes#103
Added TRICK_SYSTEM_CXXFLAGS and TRICK_SYSTEM_CFLAGS to the gte list of
variables stored in a simulation. These variables are used to
compile JIT input files.
refs #104
Found two issues. First is that the next call times for
all of the jobs was not calculated correctly. Second is
that the if the user wants to sync the sim to a real time
clock interval, the initial sync to the real time clock was pausing
the full starting sim time instead of syncing to the clock
interval.
refs #99
After about 6 unsuccessful builds I decided to run the unit tests
before checking in these files. I fixed the integrator unit
test that was failing from a previous issue along with problems
with the sims.
refs #86
Added 2 flags to trick-ICG. "-o" will specify an output directory. Added this
option to the calls to trick-ICG for the Memory Manager tests. Also added
a "-m" option to create the map files ICG creates for sims. The memory manager
tests do not need these maps so we don't include the option. Added the -m option
to the sim makefile and the master makefile so we do create the map when compile
Trick core and sims.
refs #72
I changed trick comm so that there is only one version built, not a slightly different version
if you are in or out of a sim. While I was in the trick comm code, I removed all of the
unnecessary system header file inclusions out of tc.h. I modified each of the source files
to include the system files it requires. Some sim_services files were including tc.h and
also had to be edited to add headers. I removed the stand-alone makefiles out of all
of the trick_utils directories. Finally I modified the master makefile to exclude the
trick_util directories comm, math, and units from being archived into libtrick.a. Each of
those directories will create their own library and will be included when linking a Trick sim.
refs #71
Adjusted all of the source code to point to the header files in their new
locations. Adjusted the makefiles for the header locations as well.
Added .gitignore files in the test directories to ignore test object code.