* #585 create new method to set max file size for DataRecordGroups. Needs testing and DRD interface function
* #585 dre implementation and other improvements, needs more work
* #585 update dre, add intf for drd max size functions. Still requires better comments, wiki updates, some refactoring, and testing
* #585 refactor trick-dre
* format trick-dre
* improve readability of dre output for set_max_file_size
I made a number of changes to Trick to make it compile clean with
clang++ -Wdocumentation, which checks doxygen comments. The changes
were either to comments or to parameter names in function declarations.
None of the changes have any impact on the compiled code.
Added a clock reference that to the FrameLog class that defaults
to the GetTimeOfDay clock. This clock has fast access and is
non intrusive to real-time operations using a different clock.
Added a function to set the clock to something else if desired.
Started the active event allocation at 100 events. If more are needed, we
add 100 allocations each time. The array is never reduced in size if
events are deleted, events are moved to the front of the array and the
remaining elements are set to NULL.
Created a new message class that will copy incoming messages to a
buffer area. The buffer area is pre allocated during simulation
initialization. On a separate thread the buffer area is written
to std::cout.
sometimes the TMM allocate routines fail. I added error checking
to stop a core dump. More investigation is needed to determine
why the allocation is failing.
Found more places where symbolic links cause havoc. Also added back a #define
that was removed in parameter_types.h and added back the messaging routines to
the list swig processes.
Added std::array as an STL type Trick recognizes. We can now create io code
that can save and restore std::arrays like std::vectors and other similar
types. Like other STL types, an std::array cannot be logged or viewed in
trick-tv.
For the record, I'd like to point out that many of the DataRecordGroup
functions shouldn't be called after init, but we don't prevent anyone
from doing so. Bad Trick!
Refs #350
This changes back the default behavior to not use offsetof in io_src code.
Added a flag to ICG, -c or --compat15, to globally generate offsetof statements.
Added an ENV variable that can be used to generate offsetof statements by file or directory.
Added in a warning if classes parsed at ICG time are different in size than at runtime.
Added set_unit mechanism to MonteVar baseclass. Added MonteVar's derived
classes setters where appropriate to facilitate changing inputs after
the instance of MonteVar has already been constructed. Fleshed out
MonteVarFile destructor to remove memory leaks.
2 problems found. Syncing scheduled threads was not happening at all because the job
was not being rescheduled. Did not want to deal with changing job call times so I
called the new scheuduled_thread_sync routine from advance_sim_time. That's where
it started, it'll be fine.
Also found that I was resetting job complete flags too aggressively. The check to
test if the thread is ready to run was missing. Added that check back in.
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 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
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
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
Changed the include for udunits to #include <udunits2.h> to work
on all platforms. Added the include directory /usr/include/udunits2
for Linux.
refs #231
Changed the handling of how we handle doubles and ints allowing
more mathematical operations like multiplication, division, and
some limited exponentiation.
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 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
Added a pthread specific swap buffer in both tc_read and tc_write.
The buffer is resized if a thread tries to send a buffer larger than
the current swap size.
refs #187
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
Changed the storage of offsets from bytes to bits to better handle bitfields.
Added code to track classes that are defined within other classes and are
private/protected. These classes cannot be used in templates because our
io_src code declares variables outside of the class that would try and use
these private/protected variables. When a template is found to use a
private/protected class it is skipped.
refs #218
Removed the requirement of passing flags throughout ICG indicating if we are
in an inherited class or not. Removed the init_attr friends throughout
Trick core headers.
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
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
Made adjustments to template default arguments to avoid clang compiler
errors. Also added an irnore warning during python glue code compilation
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
For addition and subtraction, we created a new routine that
only scales second units to the first. We apply it to all
conversions when adding and subtracting, but it only changes
the temperature results, because that is the only units that
has a bias factor. The comparision conversion routines were not
changed.
refs #202
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
After digging around the SWIG issues database I found a feature
compactdefaultargs that creates a call to functions with default
arguments like it did before. The important part is that the
code runs.
refs #176
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
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
Wrote a python routine called get_value_by_ref_name that takes
a variable name string as an argument. The string is passed to
ref_attributes to find the address and returns a REF2 structure. The REF2
structure is passed to ref_to_value and the type and value of the variable
is returned in a structure. We call vval_<type> to extract the raw value
from the structure and return that to python space.
Made a couple of other bug fixes in the FieldVisior and cpp input file
example found while investigating this issue.
refs #123
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
defined CONFIG_MK in the trick_util makefiles to allow making those directories
without running configure first. Removed link to hs_msg.h which no longer
exists.
refs #71
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
Moved the header files and the swig .i files to include/trick/swig. Adjusted the
source files and the convert_swig script to find the headers in their new
location.
refs #67
Moved the io_src code created by sim_services to sim_servivces/include. Also found some makefiles that needed to be changed to refer to the makefiles in their new locations.
refs #63
Reorganized. Created a new top level include directory that will hold all of Trick's header files. Moved all of the Trick headers to this directory. Created a libexec directory that holds all of the executables that users don't need to execute directly. Changed all of the executables remaining in bin to start with "trick-". In the sim_services directories changed all source files to find the Trick headers in their new location. Since all of the include files are gone in sim_services, removed the src directories as well, moving all of the source files up a level. Moved the makefiles, docs, man, and other architecture independent files into a top level share directory. Renamed lib_${TRICK_HOST_CPU} to lib64 or lib depending on the platform we're currently on.
refs #63