aboutsummaryrefslogtreecommitdiffstats
path: root/os/various/memtest.cpp
diff options
context:
space:
mode:
authorbarthess <barthess@yandex.ru>2015-08-04 00:35:44 +0300
committerbarthess <barthess@yandex.ru>2015-08-04 00:35:44 +0300
commit8c8c0a0be4dc937c36bac5c5f29a1974e5a1e0ec (patch)
tree6308cb8202e2b58da8086900ae9a123714b4e40c /os/various/memtest.cpp
parentcabe3aafad984ea9f5e05a237fa0e0e8d062d931 (diff)
downloadChibiOS-Contrib-8c8c0a0be4dc937c36bac5c5f29a1974e5a1e0ec.tar.gz
ChibiOS-Contrib-8c8c0a0be4dc937c36bac5c5f29a1974e5a1e0ec.tar.bz2
ChibiOS-Contrib-8c8c0a0be4dc937c36bac5c5f29a1974e5a1e0ec.zip
Memtest improvements
Diffstat (limited to 'os/various/memtest.cpp')
-rw-r--r--os/various/memtest.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/os/various/memtest.cpp b/os/various/memtest.cpp
index 49828ec..175ac56 100644
--- a/os/various/memtest.cpp
+++ b/os/various/memtest.cpp
@@ -20,6 +20,8 @@
#include "memtest.hpp"
+static unsigned int prng_seed = 42;
+
/*
*
*/
@@ -156,6 +158,8 @@ static void memtest_sequential(memtest_t *testp, Generator<T> &generator, T seed
const size_t steps = testp->size / sizeof(T);
size_t i;
T *mem = static_cast<T *>(testp->start);
+ T got;
+ T expect;
/* fill ram */
generator.init(seed);
@@ -165,8 +169,10 @@ static void memtest_sequential(memtest_t *testp, Generator<T> &generator, T seed
/* read back and compare */
generator.init(seed);
for (i=0; i<steps; i++) {
- if (mem[i] != generator.get()) {
- testp->ecb(testp, generator.get_type(), i*sizeof(T));
+ got = mem[i];
+ expect = generator.get();
+ if ((got != expect) && (nullptr != testp->errcb)) {
+ testp->errcb(testp, generator.get_type(), i, sizeof(T), got, expect);
return;
}
}
@@ -210,7 +216,8 @@ template <typename T>
static void moving_inversion_rand(memtest_t *testp) {
GeneratorMovingInvRand<T> generator;
T mask = -1;
- memtest_sequential<T>(testp, generator, testp->rand_seed & mask);
+ prng_seed++;
+ memtest_sequential<T>(testp, generator, prng_seed & mask);
}
/*