Commit Graph

1143 Commits

Author SHA1 Message Date
0cf5a34a9f prune-trace: pruners may add own command-line switches
Change-Id: I23293e7e6cf8ab1c3456337ba5e4af9b5e106ccb
2014-07-03 15:42:25 +02:00
6300a2b364 util: SumTree implementation
The SumTree implements an efficient tree data structure for
"roulette-wheel" sampling, or "sampling with fault expansion", i.e.,
sampling of trace entries / pilots without replacement and with a
picking probability proportional to the entries' sizes.

For every sample, the naive approach picks a random number between 0
and the sum of all entry sizes minus one.  It then iterates over all
entries and sums their sizes until the sum exceeds the random number.
The current entry gets picked.  The main disadvantage is the linear
complexity, which gets unpleasant for millions of entries.

The core idea behind the SumTree implementation is to maintain the
size sum of groups of entries, kept in "buckets".  Thereby, a bucket
can be quickly jumped over.  To keep bucket sizes (and thereby linear
search times) bounded, more bucket hierarchy levels are introduced
when a defined bucket size limit is reached.

Note that the current implementation is built for a pure growth phase
(when the tree gets filled with pilots from the database), followed by
a sampling phase when the tree gets emptied.  It does not handle a
mixed add/remove case very smartly, although it should remain
functional.

Change-Id: If05e9700bc84761b5bc31006402641e7112b3a72
2014-07-03 15:42:25 +02:00
b92df6592f util: BlackholeLogger, a quiet Logger drop-in replacement
The compiler should be able to completely optimize away side-effect
free usage of this logger.  Can be used as a drop-in replacement for
Loggers to silence logging output for known-good code without having
to remove the corresponding "LOG << ..." code.

Change-Id: Ifb276223f61686773dd6108aafd567e99c88b223
2014-07-03 15:42:25 +02:00
a198eda8c8 Merge branch 'tobias' Apply Code cleanup and restructuring with new config file to main branch. 2014-06-30 15:01:45 +02:00
9d5737a37d jobclient: fix error reporting
gethostbyname() doesn't set errno but h_errno.  Thus, we need to call
herror() instead of perror() to print an appropriate error message.
(Thanks, Björn.)

Change-Id: I8fd4bdd4af41774dd290151c5ad37090d006f423
2014-06-30 12:21:42 +02:00
960f0881a2 util/smarthops: missing linker dependency
Change-Id: I3017a8824b3bd7ae9547b6c91db6847e5f5b8694
2014-06-27 13:16:25 +02:00
ad0a15855d import-trace: log output number formatting fixed
Change-Id: Ifb81df86cb16254c04c946fa2cefca7030d2dd7a
2014-06-26 13:52:39 +02:00
7394a2cd53 import-trace: let RegisterImporter ignore unknown IP
This change makes the RegisterImporter continue importing if it
encounters an instruction pointer that is not part of the disassembled
ELF binary (and, thus, cannot be disassembled).  This is OK if we
don't want to inject into registers used by these instructions.

Change-Id: Ia9b5e7f789367f8386d63f235451dae5d399610d
2014-06-26 13:52:18 +02:00
e73ac88d1b util: LLVM disassembler off-by-one
The disassembled memory region's end (variable "End") is exclusive
now.  Up to now, the two branches defining this variable disagreed on
inclusiveness, leading to an infinite loop in one case.

Change-Id: I055fc240f6ec2f4a1d1937e48617c86612cff5c5
2014-06-25 16:43:28 +02:00
820a57a3a1 Update documentation and fix typo 2014-06-20 15:09:42 +02:00
329e5571ad Add config parameter to specify the hostname or ip addr. of the campain server.
Add some documentiation to experiment.hpp
2014-06-19 19:23:46 +02:00
a20d3cd12f exchange experimentInfo.hpp by experiment.conf which is know paresd during
runtime (no recompile anymore)
2014-06-19 19:13:33 +02:00
074eeab399 Code cleanup remove non-intruction-filtering part which is unused and broken 2014-06-17 17:07:17 +02:00
15c7a863e9 Enhance campain to use parameters. Now we need to add the parameter
--tpye to chosse between memory and register injection.
2014-06-17 12:44:58 +02:00
43b8c2351c More code cleanup 2014-06-16 14:08:08 +02:00
57c5fbf862 Bugfix for last commit 2014-06-13 21:37:26 +02:00
350f6bb680 Code Restructuring. 2014-06-13 21:08:36 +02:00
191b14c0e6 Enhancd experiment to accept config parameters. Combine all prep steps as well as the
final example in one binary. Use parameter prep to specify what you would like to do.
2014-06-13 20:39:40 +02:00
23d86aba5d Remove Injection functionallity which is currently broken and unused (fetchInstruction, logInjection, singleStep) 2014-06-11 18:06:12 +02:00
53dc6bbf36 Code cleanup 2014-06-11 11:04:03 +02:00
78a0d863a2 Expand Protocol for own Fail-Stop-Function 2014-06-11 10:54:26 +02:00
b60e1c0c66 gem5: campaigns are now running without interruption
This change introduces a fake iobus device into gem5 to prevent
it from crashing on bogus I/O memory accesses.

Change-Id: Ie69e3191bdd917cc681269852937a5a3820a93fb
2014-06-05 17:14:11 +02:00
ea34860bd8 Merge "generic-tracing: manual supply of start/stop address" 2014-06-05 10:31:23 +02:00
3ef2af3230 Merge "generic-tracing: fix parsing of addresses > 2GB" 2014-06-04 17:11:24 +02:00
85ef86b22c openocd: opcode parser relicensed
Relicensed version taken from: https://www.andreasheinig.de/project:inject

Change-Id: I740fd7b0c802e8fc6c1c54eb49830faf61dc8a25
2014-06-03 19:17:05 +02:00
c827750090 Merge branch 'failpanda'
Conflicts:
	src/core/comm/DatabaseCampaignMessage.proto.in
	src/core/cpn/CMakeLists.txt
	src/core/cpn/DatabaseCampaign.cc
	src/core/sal/ConcreteCPU.hpp
	src/core/sal/SALConfig.hpp
	src/core/util/CMakeLists.txt

Change-Id: Id86b93d0e3ea4d9963fcc88605eec0603575ec83
2014-06-03 12:24:49 +02:00
f75c8613d8 experiments: use generated dbcampaign protobuf msg
Since commit c142818, DatabaseCampaignMessage.proto is generated into
the binary directory, which must be announced to the protobuf
compiler.

Change-Id: I0c3c4c6525df687012330573979dc897dfa8d701
2014-06-03 12:20:55 +02:00
1947382c6e sal: avoid include cycle
Enabling both CONFIG_FAST_BREAKPOINTS / CONFIG_FAST_WATCHPOINTS and
CONFIG_EVENT_BREAKPOINTS / CONFIG_EVENT_BREAKPOINTS_RANGE /
CONFIG_EVENT_MEMREAD / CONFIG_EVENT_MEMWRITE led to an (unnecessary)
include cycle.

Change-Id: I8144e3e72da69b98e21a844a4bfded1b77bdce07
2014-06-03 11:47:21 +02:00
0487604c09 sal/panda: reboot is implemented
Change-Id: I2297eb60cd8f17a74a7ede122c8576d74f1251fe
2014-06-03 11:47:21 +02:00
7ab5a491ed dump-hops: needs CONFIG_INJECTIONPOINT_HOPS
Change-Id: Id884e968c903372d4f81748fbc496fea0fb7bc9e
2014-06-03 11:47:21 +02:00
c6655c0dbb util/smarthops: don't redefine address_t
Change-Id: I702c2fe8824dfe13c4e99f9400d6dacb3ae63f53
2014-06-03 11:47:21 +02:00
277958b31b cleanups
Change-Id: I8022d937477668253c613e97c3a579ae65084b1e
2014-06-03 11:47:20 +02:00
1e9da8f4e6 generic-tracing: manual supply of start/stop address
This change allows to use the generic-tracing experiment with a
manually specified start/stop address.  This is necessary to use it
with more complex systems that aren't booted from a single ELF file,
such as Fiasco.OC.

Change-Id: Iafc59f56a25a1949174724fa9ae32a1eafc5922a
2014-05-19 16:48:29 +02:00
85d1f91b0e generic-tracing: fix parsing of addresses > 2GB
We should use strtoul() instead of strtol() for parsing 32-bit addresses.

Change-Id: I46ebe32cbbebe36b18e4d10fd519ab788471fdc4
2014-05-19 16:48:08 +02:00
0afd619ec3 weather-monitor: use uint32_t for instruction pointer
This fixes a gcc 4.7 warning: comparison between signed and unsigned
integer expressions [-Wsign-compare].

Change-Id: If440567c2767494f456e8e68df29e2f8d1582955
2014-05-08 16:26:50 +02:00
07968377b3 ecos: fix golden-run runtime conversion
BochsController::getTimerTicksPerSecond() only works reliably when the
simulation is already running (e.g., after a restore()).  This broke
timeout conditions for the very first experiment in a FailBochs instance.

Change-Id: Ice5f0aa0c6759f2d9341ad4f21d5c346307b4c12
2014-04-27 19:04:05 +02:00
b1c9c295ca bochs: catch division by zero in floppy controller
This change fixes another Bochs crash in the floppy controller,
triggered by one out of 670 million experiments in my current
campaign.

Change-Id: I8a2ff78c9d2c8fca12eefb97f508bc213373bbfa
2014-04-27 19:04:05 +02:00
cfd99fe3af DatabaseCampaign: load completed pilots in memory
This change makes the DatabaseCampaign load all pilot_ids from the result
table in memory instead of LEFT JOINing them for each variant.  This vastly
improves campaign speed (possibly making commit 5567c59 superfluous) at the
cost of slightly increased startup time for half-completed (large)
campaigns.

By exploiting the generally continuous nature of pilot IDs and using a
boost::icl::interval_map, the additional memory requirements are
insignificant.

Change-Id: I1e744fb9ca33efea77a2a785cea3c94106f360df
2014-04-27 19:04:05 +02:00
a8611d1ec0 DatabaseCampaign: fix log output
When no variants matching the command line parameters were found, the
campaign printed an uninitialized sent_pilots count.

Change-Id: Ib1d70ae86f02059daeb9a62567d6c83802e4986e
2014-04-27 19:04:05 +02:00
6b1f1eba9d compiler warning fixes
The fix for tools/convert-trace/Gem5Converter.cc repairs a real issue
which caused a runtime warning to never be displayed.

Change-Id: I5d94acdbffc99d5f2a78f047062c011c6f8ab4e3
2014-04-27 19:03:23 +02:00
6c5bb9c8ed removed experiments/weather-monitor-gem5
This crippled version of the weather-monitor experiment is not needed
anymore, as gem5's restore() works now.

Change-Id: Icc3bced6b04241d55f2acc46f341cf553b6dbd08
2014-04-25 11:20:13 +02:00
73843fa634 import-trace: help sports all available importers
This change extends import-trace's help functionality for importers,
adds the ?-operator to option "-i" and refactors main.cc a little.
The extensions are "doing something useful with the AliasedRegistry"
and are merely listings of all importers' prime aliases.

Change-Id: I7bb184fc45dd9f90664e37455edfccc704d99ef1
2014-04-25 08:34:01 +02:00
af92a751d9 import-trace: alias-based (importer) registry
This change implements a generic registry in order to clean up import-trace's
code - it's possible (and reasonable) to use the registry for pruners as well.
Importer now extends AliasedRegisterable; all importers have been adapted
to suit the interface/abstract methods.
Each AliasedRegisterable should have at least one alias (the class' name
is a sensible choice) but can have several. The first specified alias is
the class' prime alias which can be used e.g. to list all registered objects.

Change-Id: If6daa34edce35a3b0194e4ba67ed3b44b74a49b0
2014-04-25 08:34:01 +02:00
77b9b08a89 revert accidental change
Change-Id: I75d6d7a6e429d6603fd82b1ce99761c2c5c7ac90
2014-04-23 15:44:56 +02:00
0807d5d9f6 L4Sys: dependency fixes
Thanks Horst!

Change-Id: I7711c7353619fdfd414ecbc1c9899308fd437d7d
2014-04-23 15:39:45 +02:00
2dd38dc524 Merge branch 'master' of ssh://i4gerrit.informatik.uni-erlangen.de:29418/fail 2014-04-23 14:55:40 +02:00
b500873bbb Merge branch 'ubuntu-trusty-fixes'
Conflicts:
	src/core/util/CMakeLists.txt

Change-Id: I94811612bcd31406c0e275f72058c331a99c8943
2014-04-11 15:05:32 +02:00
ffda979e29 cmake: prefer LLVM 3.4 over older versions
Change-Id: Id10afc70023c4b592806bb4276d3c63be20ff7f7
2014-04-11 14:43:13 +02:00
dad8a54e09 cmake: disable -Wunused-local-typedefs for gcc 4.8+
-Wunused-local-typedefs is included in -Wall since GCC 4.8, and generates a
flood of "typedef '...' locally defined but not used" warnings in
ac++-1.2-generated code.

Change-Id: I79748d5f049e269053b26935cc7a641caeb6dcba
2014-04-11 14:43:12 +02:00
9113d7c2fa cmake: find libiberty headers via cmake module
The libiberty headers moved from /usr/include (and a part of binutils-dev)
to /usr/include/libiberty (libiberty-dev) between Ubuntu 13.10 and 14.04,
which made a proper cmake search module necessary.  Searching still
continues working well on Debian 7.

Change-Id: I324e5ccb847e4664442d6fa7d7a027705a4f0587
2014-04-11 14:42:00 +02:00