Commit Graph

1214 Commits

Author SHA1 Message Date
5ac108ea4b Merge branch 'mysql-concurrency-fixes' 2014-01-20 18:35:35 +01:00
84aac60a70 use libmysqlclient_r to ensure thread safety
According to
<http://dev.mysql.com/doc/refman/5.5/en/c-api-threaded-clients.html>,
(potentially) threaded clients should use the reentrant
libmysqlclient_r.  This is just a precaution, I haven't seen any
issues with the normal libmysqlclient.

Change-Id: Icb29df6dd54eb666e3b43b73fbda406acccd11cb
2014-01-20 18:34:51 +01:00
8f9ee3fddd DatabaseCampaign: run statistics update when finished
Change-Id: Ib68e54ba82e988db0d2d74ffafa6dc9bd54cd272
2014-01-20 18:34:51 +01:00
33b63651ae DatabaseCampaign: MySQL / concurrency fixes
According to
<http://dev.mysql.com/doc/refman/5.5/en/c-api-threaded-clients.html>,
a MySQL connection handle must not be used concurrently with an open
result set and mysql_use_result() in one thread
(DatabaseCampaign::run()), and mysql_query() in another
(DatabaseCampaign::collect_result_thread()).  This indeed leads to
crashes when bounding the outgoing job queue (SERVER_OUT_QUEUE_SIZE),
and maybe even more insidous effects in other cases.  The solution is
to create separate connections for both threads.

Additionally, call mysql_library_init() before spawning any threads.

Change-Id: I2981f2fdc67c9a2cbe8781f1a21654418f621aeb
2014-01-20 18:34:51 +01:00
0534b503a6 Merge branch 'use_size_prefix-REMOVED' 2014-01-15 13:54:25 +01:00
9c984b9704 fail/cpn: (Database)Campaign no longer loses jobs
Up until now the JobServer was silently losing jobs and only claiming to be
finished - a workaround for this was to restart the campaign until all jobs
were finished according to the database and the campaign's output.
This change fixes the underlying problem, so a single campaign-run suffices
and does no longer lose any jobs.
Debugging this was awful and took us quite some time...

Change-Id: Ie6c982cc3b2ce11128941f1f13be563bae22565c
2014-01-15 12:59:13 +01:00
abd9decf0b fail/cpn: removed USE_SIZE_PREFIX from SocketComm
This removes the ability to directly parse protobufs from the socket, because
google::protobuf::Message::ParseFromFileDescriptor() needs a EOF after each message;
thus preventing us from sending multiple Message objects over a single socket.

Change-Id: I67c0f631071470d6e0ae597e42848036a6db3656
2014-01-15 12:56:38 +01:00
0a5e54e9aa ecos_kernel_test experiment bugix: don't resume if 'experiment reached finish() before FI'
Change-Id: Id0bb9400b8aa28307ed385a8c32b91b17254ba1c
2014-01-15 12:52:44 +01:00
c0fe64ecd6 Merge "gem5: don't count instruction fetch as mem access" 2014-01-14 13:26:16 +01:00
3c7861ff06 core/sal: Added features that indicate whether FAIL* is initialized
GEM5 throws a reset trap during initialization.
This happens before the startup function is called.
This leads to problems because the startup function fills the m_CPUs list.
m_CPUs is needed for the TrapListener.
Therefore, we only react on traps after initialization.
This is needed in the following commit (see gem5/src/arch/arm/faults.cc).

Change-Id: I9ec6fd453705feb54b4f8a87d024181323a2d7ef
2014-01-14 13:07:21 +01:00
efbb6c6831 Merge "sal/gem5: getTimerTicks(), getTimerTicksPerSecond() implemented" 2014-01-14 12:45:13 +01:00
f359364888 sal/gem5: getTimerTicks(), getTimerTicksPerSecond() implemented
Change-Id: I01fdb5e4bdd61fc761e93ef77904c830131c9ed6
2014-01-14 12:13:55 +01:00
2f6111b2f4 openocd: type-cast fix
Fixed type-cast.
As we are using -fpermissive, it won't compile otherwise.

Change-Id: I97180c3d642065a501540bc0d9c58328d2ed4188
2014-01-13 19:13:26 +01:00
81210d17b2 openocd: include fix
Fixed absolute includes

Change-Id: Idaaa81710b7ace764635c6ab45d86067aadd1220
2014-01-13 19:13:26 +01:00
c03f42db44 openocd: config fix
In the OpenOCD config file for omap4460 an old definition of
Cortex-A9 CPUs was used. Without this fix, OpenOCD would not
start up.

Additionally this commit reduces the number of available Cortex-M
debug targets to one for the sake of simplicity.

Change-Id: Ic690bebd3d171ac0773bb0f1a8087ac96127fb6e
2014-01-13 19:13:26 +01:00
74b4a04d8e openocd: fixed static definition
As the target_to_arm function is needed in the OpenOCD-Wrapper,
it can't be any longer static.

Change-Id: I7099b99f2f1433359567278be16e4d71e06f28a7
2014-01-13 19:13:25 +01:00
f24d9813b6 openocd: speed-up
Normally OpenOCD reads all GP-Registers at halt, which is slow.
Restriction to only necessary Registers 1 and 15.

In the normal use case of OpenOCD this performance reduction does
not matter, because debugging does not need to be optimized for
performance. It just has to be faster than the human perception.

If we need to get the values of the registers 2 to 14, these are
fetched on demand per register.

Change-Id: I8587fbcc41c18722baebca1cec074188fe4cdebb
2014-01-13 19:13:25 +01:00
7e3cabf197 openocd: disabled main
As the openocd-executable won't be needed, the main-function just
prints a warning, which should never be seen in fail context.

Change-Id: I8e5bbd00f152f68058f946b68201c0917db9ec9a
2014-01-13 19:13:12 +01:00
f41247b143 gem5: don't count instruction fetch as mem access
Change-Id: I6ea9811c132ef7c235d5a03486ca08afc842b51f
2014-01-06 15:54:02 +01:00
34065fea60 weather-monitor: command line parameter are forwarded now
Parameters that are specified on the command line are now also forwarded.

Change-Id: I0e636f14dba43ef7877ce6e6deca1abb1f00a8a6
2014-01-03 16:38:02 +01:00
0907dfb0ae weather-monitor: now is a DatabaseCampaign
"removed" unneccessary memory-mapping ("Step 0")
cleaned out ExperimentData - now consists only of fsppilot and resultset
resultset now contains bitoffset which is part of result-table's primary key
adapted code to work with msg.fsppilot() instead of ExperimentData-values

Change-Id: I3b310e7a71d4b28479028250cd5722b3b2ce9f8c
2013-12-11 14:38:01 +01:00
839913592a Merge "Coding Guideline: Fixes." 2013-12-06 20:18:06 +01:00
ab9c0edf10 DatabaseCampaign: run jobs for known-outcome exps, too
Although we know that a known_outcome=1 pilot does not exhibit
behavior different from the golden run, the database schema does not
yet know what this behavior looks like (in terms of result-table
column values).  In order to be able to JOIN valid results for all
memory writes in the trace table (fspgroup maps them all onto *one*
pilot per variant), we need to run these experiments, too.

Additionally, don't join the fspgroup table; we only need this one for
result calculations afterwards.

Change-Id: Idcd2991274fede84526b1eee68a231774625d11a
2013-12-05 19:27:44 +01:00
8b6d744a3e import-trace: fix for using non-gzipped traces
As non-gzipped trace files cause import-trace to always import zero
events, the input file is now openend as in the dump-trace tool, where
opening non-gzipped files obviously works fine.

In the medium term we should find a centralized solution for this,
instead of re-implementing it all over the place.

Change-Id: I75845c03c0bbdc2b6b578b83d492b7dbbb40f051
2013-12-04 12:00:21 +01:00
73c39f7787 openocd: header fix
* If included by cpp-file, this will cause trouble. So it gets restricted
to use in c only.
* Prevent usage of "new" as variable name
* No redifinition of true and false, if included by C++
* Definition of bool fixed

Change-Id: Ic5403bd576afd9d2900a8ecfbcfdc50561ba0633
2013-12-02 14:53:35 +01:00
0bb8ff2fa7 openocd: add openocd wrapper
Including
 * Main loop for controlling pandaboard
 * Modification routines like setting halt conditions, reading
   or writing Memory, Registers, etc.
 * Timers

The *.hpp file is defined as *.hpp.in, because the absolute path to
config file must be set by CMake-Script (Will be introduced in later
commit)

Change-Id: I648df4916877dae550943bbb9b264b8d662689b7
2013-12-02 14:53:35 +01:00
5166ddf5e7 openocd: config file for Pandaboard ES + Flyswatter2
Combines the selection of both relevant config files.

Change-Id: Icc7d0add2f0a2ceab5ed715ef8d6b3b6a70ec774
2013-12-02 14:53:35 +01:00
83d72a091e debuggers: import openocd-0.7.0
Initial check-in of openocd-0.7.0 as it can be downloaded from
http://sourceforge.net/projects/openocd/files/openocd/0.7.0/

Any modifications will follow.

Change-Id: I6949beaefd589e046395ea0cb80f4e1ab1654d55
2013-12-02 14:53:22 +01:00
85fffe007e tracing: bugfix for enabled memory maps
With the recent updates to record one additional instruction at the trace
start, I broke memory-map handling (restrictMemoryAddresses() and
restrictInstructionAddresses()).  This change repairs this functionality.

Change-Id: I0daf9f474d0efe3f8e30a168c0ccc1e993e7ddc6
2013-11-18 15:49:06 +01:00
bd91549367 Merge "gem5: restore works now" 2013-11-13 17:20:53 +01:00
45e0b41022 gem5: restore works now
The function restore(PATH) can now be used to restore a checkpoint.

Change-Id: I25faf9f6335261d2b3ade4185eae93983ece9f97
2013-11-13 17:15:19 +01:00
f31548c026 Merge "core/sal: register issue fixed" 2013-11-13 16:08:40 +01:00
6fa0ae970b Coding Guideline: Fixes.
Sorry, for the small changesets.

Change-Id: I12e7b1b4efff0c63020613e399f8185ace97aec7
2013-11-11 13:27:43 +01:00
cf95437e65 RealtimeLogger: Fixed coding guideline issues.
Change-Id: I1172e0c60e2d6e895b4d3f99eb1a023c348bd3b3
2013-11-11 13:18:26 +01:00
8f0db45dfe Exp: Base system for the real time systems lecture
Change-Id: I3e5b8c6e60b57e6ec03500e9ee109fd5fb322cb2
2013-11-11 13:08:26 +01:00
4c7fcae6ad plugins: A simple signal generator
Listens on a configurable SUT's global variable.
On read access a signal pattern value is calculated and sent back
to the SUT.

Currently, only a superimposable sine wave signal form is implemented.
Further signal forms can be implemented by inheriting from the
abstract SignalForm class.

Change-Id: I2e6cf49cd44797999691c9e9cf0c54dd3c96875e
2013-11-11 13:07:42 +01:00
5d867be83b plugins: RealtimeLogger plugin
Logs access to a given global variable of the SUT, given by
a symbol name, and outputs value when variable is written to file.
Format:
<Simulation time>;<Value of variable>

Change-Id: I81b581e571be4255a1a2200c41e7c16657ddfd3d
2013-11-11 12:30:52 +01:00
443b3e4919 L4Sys: termination shortcuts
Add two new breakpoints to L4Sys experiment that allow detecting that
execution terminated with an error: vga_console_blink() is called by the
kernel if JDB was entered (meaning we are hanging, e.g., due to an
assertion); also longjmp() is only used by PF handling code after no
valid page fault handling could be performed

Change-Id: Ice61039c4bd07815a316bbc0bdb39f3483d9a1da
2013-11-06 17:37:20 +01:00
d4f22a38ff L4Sys: EIP deviation tracking
* after injecting a fault, track how many instructions it takes until
  execution deviates from original execution
* also track what the first deviating EIP value is

Change-Id: I18a9250517ca90214728c2c4b036b412f5dbf224
2013-11-06 17:37:20 +01:00
3db5d034a2 InstructionFilter: make unused EIP a default 0 parameter
Change-Id: I972be71af70934eef98bc67b27e32a98ecb8be3b
2013-11-06 17:37:20 +01:00
a5866a68a2 add l4-sys ignore file
Change-Id: Iea2228d8bafc2a3ecb4b6e26e2552813821a3d0b
2013-11-06 17:37:19 +01:00
71170145e0 Adapt l4-sys experiment to importer fix
no need to decrement instruction offset before setting bp anymore

Change-Id: I7f9c02349663899fa8f496a46bcb357bd567ac5c
2013-11-06 17:37:19 +01:00
63610d0652 L4sys: build fix
experiment.hpp is parsed before l4sys.ph.h is generated
-> remove dependency

Change-Id: I128108e562877caca732ad43fdb65b12e56951f8
2013-11-06 17:37:19 +01:00
3bf64351a4 core/sal: register issue fixed
Before, it was not possible to add registers in arbitrary order.

Change-Id: I952c03ea4339da2cdaf34bd4546c76c33cecd4cd
2013-11-01 17:26:26 +01:00
c000b50101 Merge branch 'tracing-off-by-one' 2013-10-28 18:37:07 +01:00
5171645d9a plugin/tracing: fix extended trace on umapped memory areas
When a register in the extended trace was dereferenced and the value
was smaller than the memory pool size, but the address was not mapped
an assertion occured and the tracing plugin terminated the
simulator. Now the dereferenced memory address is checked for being
mapped and not being smaller than the memory pool.

Change-Id: I9ac954988ef860969679f9f360814c5e4b66f473
2013-10-28 15:09:35 +01:00
148b09be2e tools/import-trace: added ElfImporter
The ElfImporter is not a real trace importer, but we locate it
into the import-trace utility, since here the infrastructure is
already in place to import things related to an elf binary into
the database.

The ElfImporter calls objdump and dissassembles an elf binary
and imports the results into the database.

Change-Id: I6e35673c8dbee3b7e8dfc7549d10e5dca9b55935
2013-10-24 15:30:17 +02:00
c87075e598 Merge branch 'importtrace-reparse-parameters' 2013-10-23 15:51:21 +02:00
d97e3dfa8f revert out-of-l4sys change
Change-Id: I86b27aae6fa30992b485af79e767ec23949d1e62
2013-10-21 15:38:15 +02:00
a65c64791e L4Sys experiment: add CR3 detection to prep run
Change-Id: Iebbc0309695ee6a7bb8c68fd6ffa24b73ffd7ee5
2013-10-21 15:28:07 +02:00