[Xenomai-git] Philippe Gerum : testsuite/smokey: add test suite for memory allocators

2018-05-20 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: 25534016c780ee56a87610a0c269ae4a263a725c
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=25534016c780ee56a87610a0c269ae4a263a725c

Author: Philippe Gerum 
Date:   Sun Apr 22 18:20:04 2018 +0200

testsuite/smokey: add test suite for memory allocators

---

 configure.ac|4 +
 testsuite/smokey/Makefile.am|   17 +-
 testsuite/smokey/memcheck/Makefile.am   |8 +
 testsuite/smokey/memcheck/memcheck.c|  884 +++
 testsuite/smokey/memcheck/memcheck.h|   65 ++
 testsuite/smokey/memory-heapmem/Makefile.am |9 +
 testsuite/smokey/memory-heapmem/heapmem.c   |   51 ++
 testsuite/smokey/memory-pshared/Makefile.am |9 +
 testsuite/smokey/memory-pshared/pshared.c   |  121 
 testsuite/smokey/memory-tlsf/Makefile.am|   10 +
 testsuite/smokey/memory-tlsf/tlsf.c |  123 
 11 files changed, 1300 insertions(+), 1 deletion(-)

diff --git a/configure.ac b/configure.ac
index ec2d7cb..c0ef1df 100644
--- a/configure.ac
+++ b/configure.ac
@@ -931,6 +931,10 @@ AC_CONFIG_FILES([ \
testsuite/smokey/timerfd/Makefile \
testsuite/smokey/tsc/Makefile \
testsuite/smokey/leaks/Makefile \
+   testsuite/smokey/memcheck/Makefile \
+   testsuite/smokey/memory-heapmem/Makefile \
+   testsuite/smokey/memory-tlsf/Makefile \
+   testsuite/smokey/memory-pshared/Makefile \
testsuite/smokey/fpu-stress/Makefile \
testsuite/smokey/net_udp/Makefile \
testsuite/smokey/net_packet_dgram/Makefile \
diff --git a/testsuite/smokey/Makefile.am b/testsuite/smokey/Makefile.am
index c6fe70b..d7a71fe 100644
--- a/testsuite/smokey/Makefile.am
+++ b/testsuite/smokey/Makefile.am
@@ -5,6 +5,10 @@ CCLD = $(top_srcdir)/scripts/wrap-link.sh $(CC)
 
 smokey_SOURCES = main.c
 
+# Make sure to list modules from the most dependent to the
+# least. e.g. net_common should appear after all net_* modules,
+# memcheck should appear after all heapmem-* modules.
+
 COBALT_SUBDIRS =   \
arith   \
bufp\
@@ -12,6 +16,9 @@ COBALT_SUBDIRS =  \
fpu-stress  \
iddp\
leaks   \
+   memory-heapmem  \
+   memory-tlsf \
+   memcheck\
net_packet_dgram\
net_packet_raw  \
net_udp \
@@ -31,11 +38,19 @@ COBALT_SUBDIRS =\
vdso-access \
xddp
 
+if XENO_PSHARED
+COBALT_SUBDIRS += memory-pshared
+endif
+
 if CONFIG_XENO_LIBS_DLOPEN
 COBALT_SUBDIRS += dlopen
 endif
 
-MERCURY_SUBDIRS =
+MERCURY_SUBDIRS = memory-heapmem memory-tlsf
+if XENO_PSHARED
+MERCURY_SUBDIRS += memory-pshared
+endif
+MERCURY_SUBDIRS += memcheck
 
 DIST_SUBDIRS = $(COBALT_SUBDIRS) $(MERCURY_SUBDIRS)
 
diff --git a/testsuite/smokey/memcheck/Makefile.am 
b/testsuite/smokey/memcheck/Makefile.am
new file mode 100644
index 000..482314a
--- /dev/null
+++ b/testsuite/smokey/memcheck/Makefile.am
@@ -0,0 +1,8 @@
+noinst_LIBRARIES = libmemcheck.a
+noinst_HEADERS = memcheck.h
+
+AM_CPPFLAGS =  \
+   @XENO_USER_CFLAGS@  \
+   -I$(top_srcdir)/include
+
+libmemcheck_a_SOURCES = memcheck.c
diff --git a/testsuite/smokey/memcheck/memcheck.c 
b/testsuite/smokey/memcheck/memcheck.c
new file mode 100644
index 000..3f18477
--- /dev/null
+++ b/testsuite/smokey/memcheck/memcheck.c
@@ -0,0 +1,884 @@
+/*
+ * Copyright (C) 2018 Philippe Gerum 
+ *
+ * SPDX-License-Identifier: MIT
+ */
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include "memcheck.h"
+
+enum pattern {
+   alphabet_series,
+   digit_series,
+   binary_series,
+};
+
+struct chunk {
+   void *ptr;
+   enum pattern pattern;
+};
+
+struct runstats {
+   size_t heap_size;
+   size_t user_size;
+   size_t block_size;
+   int nrblocks;
+   long alloc_avg_ns;
+   long alloc_max_ns;
+   long free_avg_ns;
+   long free_max_ns;
+   int flags;
+   double overhead;
+   double fragmentation;
+   struct runstats *next;
+};
+
+static struct runstats *statistics;
+
+static int nrstats;
+
+static int max_results = 4;
+
+static inline long diff_ts(struct timespec *left, struct timespec *right)
+{
+   return (long long)(left->tv_sec - right->tv_sec) * ONE_BILLION
+   + left->tv_nsec - right->tv_nsec;
+}
+
+static inline void swap(void *left, void *right, const size_t size)
+{
+   char trans[size];
+
+   memcpy(trans, left, size);
+   memcpy(left, right, size);
+   memcpy(right, trans, size);
+}
+
+static void random_shuffle(void *vbase, size_t nmemb, const size_t size)
+{
+   struct {
+   char x[size];
+   } __attribute__((packed)) *base = vbase;
+   unsigned int j, k;
+   double u;
+
+   for(j = nmemb; j > 0; j--) {
+   u = (double)random() / RAND_MAX;
+   k = (unsigned int)(j * u)

[Xenomai-git] Philippe Gerum : testsuite/smokey: add test suite for memory allocators

2018-05-15 Thread git repository hosting
Module: xenomai-3
Branch: wip/heapmem
Commit: f71ced70e583c12913b278460256e0ae5ce71697
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=f71ced70e583c12913b278460256e0ae5ce71697

Author: Philippe Gerum 
Date:   Sun Apr 22 18:20:04 2018 +0200

testsuite/smokey: add test suite for memory allocators

---

 configure.ac|4 +
 testsuite/smokey/Makefile.am|   17 +-
 testsuite/smokey/memcheck/Makefile.am   |8 +
 testsuite/smokey/memcheck/memcheck.c|  884 +++
 testsuite/smokey/memcheck/memcheck.h|   65 ++
 testsuite/smokey/memory-heapmem/Makefile.am |9 +
 testsuite/smokey/memory-heapmem/heapmem.c   |   51 ++
 testsuite/smokey/memory-pshared/Makefile.am |9 +
 testsuite/smokey/memory-pshared/pshared.c   |  121 
 testsuite/smokey/memory-tlsf/Makefile.am|   10 +
 testsuite/smokey/memory-tlsf/tlsf.c |  123 
 11 files changed, 1300 insertions(+), 1 deletion(-)

diff --git a/configure.ac b/configure.ac
index ec2d7cb..c0ef1df 100644
--- a/configure.ac
+++ b/configure.ac
@@ -931,6 +931,10 @@ AC_CONFIG_FILES([ \
testsuite/smokey/timerfd/Makefile \
testsuite/smokey/tsc/Makefile \
testsuite/smokey/leaks/Makefile \
+   testsuite/smokey/memcheck/Makefile \
+   testsuite/smokey/memory-heapmem/Makefile \
+   testsuite/smokey/memory-tlsf/Makefile \
+   testsuite/smokey/memory-pshared/Makefile \
testsuite/smokey/fpu-stress/Makefile \
testsuite/smokey/net_udp/Makefile \
testsuite/smokey/net_packet_dgram/Makefile \
diff --git a/testsuite/smokey/Makefile.am b/testsuite/smokey/Makefile.am
index c6fe70b..d7a71fe 100644
--- a/testsuite/smokey/Makefile.am
+++ b/testsuite/smokey/Makefile.am
@@ -5,6 +5,10 @@ CCLD = $(top_srcdir)/scripts/wrap-link.sh $(CC)
 
 smokey_SOURCES = main.c
 
+# Make sure to list modules from the most dependent to the
+# least. e.g. net_common should appear after all net_* modules,
+# memcheck should appear after all heapmem-* modules.
+
 COBALT_SUBDIRS =   \
arith   \
bufp\
@@ -12,6 +16,9 @@ COBALT_SUBDIRS =  \
fpu-stress  \
iddp\
leaks   \
+   memory-heapmem  \
+   memory-tlsf \
+   memcheck\
net_packet_dgram\
net_packet_raw  \
net_udp \
@@ -31,11 +38,19 @@ COBALT_SUBDIRS =\
vdso-access \
xddp
 
+if XENO_PSHARED
+COBALT_SUBDIRS += memory-pshared
+endif
+
 if CONFIG_XENO_LIBS_DLOPEN
 COBALT_SUBDIRS += dlopen
 endif
 
-MERCURY_SUBDIRS =
+MERCURY_SUBDIRS = memory-heapmem memory-tlsf
+if XENO_PSHARED
+MERCURY_SUBDIRS += memory-pshared
+endif
+MERCURY_SUBDIRS += memcheck
 
 DIST_SUBDIRS = $(COBALT_SUBDIRS) $(MERCURY_SUBDIRS)
 
diff --git a/testsuite/smokey/memcheck/Makefile.am 
b/testsuite/smokey/memcheck/Makefile.am
new file mode 100644
index 000..482314a
--- /dev/null
+++ b/testsuite/smokey/memcheck/Makefile.am
@@ -0,0 +1,8 @@
+noinst_LIBRARIES = libmemcheck.a
+noinst_HEADERS = memcheck.h
+
+AM_CPPFLAGS =  \
+   @XENO_USER_CFLAGS@  \
+   -I$(top_srcdir)/include
+
+libmemcheck_a_SOURCES = memcheck.c
diff --git a/testsuite/smokey/memcheck/memcheck.c 
b/testsuite/smokey/memcheck/memcheck.c
new file mode 100644
index 000..3f18477
--- /dev/null
+++ b/testsuite/smokey/memcheck/memcheck.c
@@ -0,0 +1,884 @@
+/*
+ * Copyright (C) 2018 Philippe Gerum 
+ *
+ * SPDX-License-Identifier: MIT
+ */
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include "memcheck.h"
+
+enum pattern {
+   alphabet_series,
+   digit_series,
+   binary_series,
+};
+
+struct chunk {
+   void *ptr;
+   enum pattern pattern;
+};
+
+struct runstats {
+   size_t heap_size;
+   size_t user_size;
+   size_t block_size;
+   int nrblocks;
+   long alloc_avg_ns;
+   long alloc_max_ns;
+   long free_avg_ns;
+   long free_max_ns;
+   int flags;
+   double overhead;
+   double fragmentation;
+   struct runstats *next;
+};
+
+static struct runstats *statistics;
+
+static int nrstats;
+
+static int max_results = 4;
+
+static inline long diff_ts(struct timespec *left, struct timespec *right)
+{
+   return (long long)(left->tv_sec - right->tv_sec) * ONE_BILLION
+   + left->tv_nsec - right->tv_nsec;
+}
+
+static inline void swap(void *left, void *right, const size_t size)
+{
+   char trans[size];
+
+   memcpy(trans, left, size);
+   memcpy(left, right, size);
+   memcpy(right, trans, size);
+}
+
+static void random_shuffle(void *vbase, size_t nmemb, const size_t size)
+{
+   struct {
+   char x[size];
+   } __attribute__((packed)) *base = vbase;
+   unsigned int j, k;
+   double u;
+
+   for(j = nmemb; j > 0; j--) {
+   u = (double)random() / RAND_MAX;
+   k = (unsigned int)

[Xenomai-git] Philippe Gerum : testsuite/smokey: add test suite for memory allocators

2018-04-27 Thread git repository hosting
Module: xenomai-3
Branch: wip/heapmem
Commit: ebfcb36320e00906fd2bf4b8058bb33620788547
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=ebfcb36320e00906fd2bf4b8058bb33620788547

Author: Philippe Gerum 
Date:   Sun Apr 22 18:20:04 2018 +0200

testsuite/smokey: add test suite for memory allocators

---

 configure.ac|4 +
 testsuite/smokey/Makefile.am|   17 +-
 testsuite/smokey/memcheck/Makefile.am   |8 +
 testsuite/smokey/memcheck/memcheck.c|  884 +++
 testsuite/smokey/memcheck/memcheck.h|   65 ++
 testsuite/smokey/memory-heapmem/Makefile.am |9 +
 testsuite/smokey/memory-heapmem/heapmem.c   |   51 ++
 testsuite/smokey/memory-pshared/Makefile.am |9 +
 testsuite/smokey/memory-pshared/pshared.c   |  121 
 testsuite/smokey/memory-tlsf/Makefile.am|   10 +
 testsuite/smokey/memory-tlsf/tlsf.c |  123 
 11 files changed, 1300 insertions(+), 1 deletion(-)

diff --git a/configure.ac b/configure.ac
index ec2d7cb..c0ef1df 100644
--- a/configure.ac
+++ b/configure.ac
@@ -931,6 +931,10 @@ AC_CONFIG_FILES([ \
testsuite/smokey/timerfd/Makefile \
testsuite/smokey/tsc/Makefile \
testsuite/smokey/leaks/Makefile \
+   testsuite/smokey/memcheck/Makefile \
+   testsuite/smokey/memory-heapmem/Makefile \
+   testsuite/smokey/memory-tlsf/Makefile \
+   testsuite/smokey/memory-pshared/Makefile \
testsuite/smokey/fpu-stress/Makefile \
testsuite/smokey/net_udp/Makefile \
testsuite/smokey/net_packet_dgram/Makefile \
diff --git a/testsuite/smokey/Makefile.am b/testsuite/smokey/Makefile.am
index c6fe70b..d7a71fe 100644
--- a/testsuite/smokey/Makefile.am
+++ b/testsuite/smokey/Makefile.am
@@ -5,6 +5,10 @@ CCLD = $(top_srcdir)/scripts/wrap-link.sh $(CC)
 
 smokey_SOURCES = main.c
 
+# Make sure to list modules from the most dependent to the
+# least. e.g. net_common should appear after all net_* modules,
+# memcheck should appear after all heapmem-* modules.
+
 COBALT_SUBDIRS =   \
arith   \
bufp\
@@ -12,6 +16,9 @@ COBALT_SUBDIRS =  \
fpu-stress  \
iddp\
leaks   \
+   memory-heapmem  \
+   memory-tlsf \
+   memcheck\
net_packet_dgram\
net_packet_raw  \
net_udp \
@@ -31,11 +38,19 @@ COBALT_SUBDIRS =\
vdso-access \
xddp
 
+if XENO_PSHARED
+COBALT_SUBDIRS += memory-pshared
+endif
+
 if CONFIG_XENO_LIBS_DLOPEN
 COBALT_SUBDIRS += dlopen
 endif
 
-MERCURY_SUBDIRS =
+MERCURY_SUBDIRS = memory-heapmem memory-tlsf
+if XENO_PSHARED
+MERCURY_SUBDIRS += memory-pshared
+endif
+MERCURY_SUBDIRS += memcheck
 
 DIST_SUBDIRS = $(COBALT_SUBDIRS) $(MERCURY_SUBDIRS)
 
diff --git a/testsuite/smokey/memcheck/Makefile.am 
b/testsuite/smokey/memcheck/Makefile.am
new file mode 100644
index 000..482314a
--- /dev/null
+++ b/testsuite/smokey/memcheck/Makefile.am
@@ -0,0 +1,8 @@
+noinst_LIBRARIES = libmemcheck.a
+noinst_HEADERS = memcheck.h
+
+AM_CPPFLAGS =  \
+   @XENO_USER_CFLAGS@  \
+   -I$(top_srcdir)/include
+
+libmemcheck_a_SOURCES = memcheck.c
diff --git a/testsuite/smokey/memcheck/memcheck.c 
b/testsuite/smokey/memcheck/memcheck.c
new file mode 100644
index 000..3f18477
--- /dev/null
+++ b/testsuite/smokey/memcheck/memcheck.c
@@ -0,0 +1,884 @@
+/*
+ * Copyright (C) 2018 Philippe Gerum 
+ *
+ * SPDX-License-Identifier: MIT
+ */
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include "memcheck.h"
+
+enum pattern {
+   alphabet_series,
+   digit_series,
+   binary_series,
+};
+
+struct chunk {
+   void *ptr;
+   enum pattern pattern;
+};
+
+struct runstats {
+   size_t heap_size;
+   size_t user_size;
+   size_t block_size;
+   int nrblocks;
+   long alloc_avg_ns;
+   long alloc_max_ns;
+   long free_avg_ns;
+   long free_max_ns;
+   int flags;
+   double overhead;
+   double fragmentation;
+   struct runstats *next;
+};
+
+static struct runstats *statistics;
+
+static int nrstats;
+
+static int max_results = 4;
+
+static inline long diff_ts(struct timespec *left, struct timespec *right)
+{
+   return (long long)(left->tv_sec - right->tv_sec) * ONE_BILLION
+   + left->tv_nsec - right->tv_nsec;
+}
+
+static inline void swap(void *left, void *right, const size_t size)
+{
+   char trans[size];
+
+   memcpy(trans, left, size);
+   memcpy(left, right, size);
+   memcpy(right, trans, size);
+}
+
+static void random_shuffle(void *vbase, size_t nmemb, const size_t size)
+{
+   struct {
+   char x[size];
+   } __attribute__((packed)) *base = vbase;
+   unsigned int j, k;
+   double u;
+
+   for(j = nmemb; j > 0; j--) {
+   u = (double)random() / RAND_MAX;
+   k = (unsigned int)

[Xenomai-git] Philippe Gerum : testsuite/smokey: add test suite for memory allocators

2018-04-27 Thread git repository hosting
Module: xenomai-3
Branch: wip/heapmem
Commit: e3019ac600cf0f3b202cf1b454b463b7cef074ff
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=e3019ac600cf0f3b202cf1b454b463b7cef074ff

Author: Philippe Gerum 
Date:   Sun Apr 22 18:20:04 2018 +0200

testsuite/smokey: add test suite for memory allocators

---

 configure.ac|4 +
 testsuite/smokey/Makefile.am|   17 +-
 testsuite/smokey/memcheck/Makefile.am   |8 +
 testsuite/smokey/memcheck/memcheck.c|  884 +++
 testsuite/smokey/memcheck/memcheck.h|   65 ++
 testsuite/smokey/memory-heapmem/Makefile.am |9 +
 testsuite/smokey/memory-heapmem/heapmem.c   |   51 ++
 testsuite/smokey/memory-pshared/Makefile.am |9 +
 testsuite/smokey/memory-pshared/pshared.c   |  121 
 testsuite/smokey/memory-tlsf/Makefile.am|   10 +
 testsuite/smokey/memory-tlsf/tlsf.c |  123 
 11 files changed, 1300 insertions(+), 1 deletion(-)

diff --git a/configure.ac b/configure.ac
index ec2d7cb..c0ef1df 100644
--- a/configure.ac
+++ b/configure.ac
@@ -931,6 +931,10 @@ AC_CONFIG_FILES([ \
testsuite/smokey/timerfd/Makefile \
testsuite/smokey/tsc/Makefile \
testsuite/smokey/leaks/Makefile \
+   testsuite/smokey/memcheck/Makefile \
+   testsuite/smokey/memory-heapmem/Makefile \
+   testsuite/smokey/memory-tlsf/Makefile \
+   testsuite/smokey/memory-pshared/Makefile \
testsuite/smokey/fpu-stress/Makefile \
testsuite/smokey/net_udp/Makefile \
testsuite/smokey/net_packet_dgram/Makefile \
diff --git a/testsuite/smokey/Makefile.am b/testsuite/smokey/Makefile.am
index c6fe70b..d7a71fe 100644
--- a/testsuite/smokey/Makefile.am
+++ b/testsuite/smokey/Makefile.am
@@ -5,6 +5,10 @@ CCLD = $(top_srcdir)/scripts/wrap-link.sh $(CC)
 
 smokey_SOURCES = main.c
 
+# Make sure to list modules from the most dependent to the
+# least. e.g. net_common should appear after all net_* modules,
+# memcheck should appear after all heapmem-* modules.
+
 COBALT_SUBDIRS =   \
arith   \
bufp\
@@ -12,6 +16,9 @@ COBALT_SUBDIRS =  \
fpu-stress  \
iddp\
leaks   \
+   memory-heapmem  \
+   memory-tlsf \
+   memcheck\
net_packet_dgram\
net_packet_raw  \
net_udp \
@@ -31,11 +38,19 @@ COBALT_SUBDIRS =\
vdso-access \
xddp
 
+if XENO_PSHARED
+COBALT_SUBDIRS += memory-pshared
+endif
+
 if CONFIG_XENO_LIBS_DLOPEN
 COBALT_SUBDIRS += dlopen
 endif
 
-MERCURY_SUBDIRS =
+MERCURY_SUBDIRS = memory-heapmem memory-tlsf
+if XENO_PSHARED
+MERCURY_SUBDIRS += memory-pshared
+endif
+MERCURY_SUBDIRS += memcheck
 
 DIST_SUBDIRS = $(COBALT_SUBDIRS) $(MERCURY_SUBDIRS)
 
diff --git a/testsuite/smokey/memcheck/Makefile.am 
b/testsuite/smokey/memcheck/Makefile.am
new file mode 100644
index 000..482314a
--- /dev/null
+++ b/testsuite/smokey/memcheck/Makefile.am
@@ -0,0 +1,8 @@
+noinst_LIBRARIES = libmemcheck.a
+noinst_HEADERS = memcheck.h
+
+AM_CPPFLAGS =  \
+   @XENO_USER_CFLAGS@  \
+   -I$(top_srcdir)/include
+
+libmemcheck_a_SOURCES = memcheck.c
diff --git a/testsuite/smokey/memcheck/memcheck.c 
b/testsuite/smokey/memcheck/memcheck.c
new file mode 100644
index 000..3f18477
--- /dev/null
+++ b/testsuite/smokey/memcheck/memcheck.c
@@ -0,0 +1,884 @@
+/*
+ * Copyright (C) 2018 Philippe Gerum 
+ *
+ * SPDX-License-Identifier: MIT
+ */
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include "memcheck.h"
+
+enum pattern {
+   alphabet_series,
+   digit_series,
+   binary_series,
+};
+
+struct chunk {
+   void *ptr;
+   enum pattern pattern;
+};
+
+struct runstats {
+   size_t heap_size;
+   size_t user_size;
+   size_t block_size;
+   int nrblocks;
+   long alloc_avg_ns;
+   long alloc_max_ns;
+   long free_avg_ns;
+   long free_max_ns;
+   int flags;
+   double overhead;
+   double fragmentation;
+   struct runstats *next;
+};
+
+static struct runstats *statistics;
+
+static int nrstats;
+
+static int max_results = 4;
+
+static inline long diff_ts(struct timespec *left, struct timespec *right)
+{
+   return (long long)(left->tv_sec - right->tv_sec) * ONE_BILLION
+   + left->tv_nsec - right->tv_nsec;
+}
+
+static inline void swap(void *left, void *right, const size_t size)
+{
+   char trans[size];
+
+   memcpy(trans, left, size);
+   memcpy(left, right, size);
+   memcpy(right, trans, size);
+}
+
+static void random_shuffle(void *vbase, size_t nmemb, const size_t size)
+{
+   struct {
+   char x[size];
+   } __attribute__((packed)) *base = vbase;
+   unsigned int j, k;
+   double u;
+
+   for(j = nmemb; j > 0; j--) {
+   u = (double)random() / RAND_MAX;
+   k = (unsigned int)

[Xenomai-git] Philippe Gerum : testsuite/smokey: add test suite for memory allocators

2018-04-26 Thread git repository hosting
Module: xenomai-3
Branch: wip/heapmem
Commit: a2c232d73b0ffdae8235a9c3f68728f68500fad4
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=a2c232d73b0ffdae8235a9c3f68728f68500fad4

Author: Philippe Gerum 
Date:   Sun Apr 22 18:20:04 2018 +0200

testsuite/smokey: add test suite for memory allocators

---

 configure.ac|4 +
 testsuite/smokey/Makefile.am|   17 +-
 testsuite/smokey/memcheck/Makefile.am   |8 +
 testsuite/smokey/memcheck/memcheck.c|  851 +++
 testsuite/smokey/memcheck/memcheck.h|   65 ++
 testsuite/smokey/memory-heapmem/Makefile.am |9 +
 testsuite/smokey/memory-heapmem/heapmem.c   |   51 ++
 testsuite/smokey/memory-pshared/Makefile.am |9 +
 testsuite/smokey/memory-pshared/pshared.c   |  125 
 testsuite/smokey/memory-tlsf/Makefile.am|   10 +
 testsuite/smokey/memory-tlsf/tlsf.c |  123 
 11 files changed, 1271 insertions(+), 1 deletion(-)

diff --git a/configure.ac b/configure.ac
index 59ea776..61ebcbe 100644
--- a/configure.ac
+++ b/configure.ac
@@ -930,6 +930,10 @@ AC_CONFIG_FILES([ \
testsuite/smokey/timerfd/Makefile \
testsuite/smokey/tsc/Makefile \
testsuite/smokey/leaks/Makefile \
+   testsuite/smokey/memcheck/Makefile \
+   testsuite/smokey/memory-heapmem/Makefile \
+   testsuite/smokey/memory-tlsf/Makefile \
+   testsuite/smokey/memory-pshared/Makefile \
testsuite/smokey/fpu-stress/Makefile \
testsuite/smokey/net_udp/Makefile \
testsuite/smokey/net_packet_dgram/Makefile \
diff --git a/testsuite/smokey/Makefile.am b/testsuite/smokey/Makefile.am
index c6fe70b..d7a71fe 100644
--- a/testsuite/smokey/Makefile.am
+++ b/testsuite/smokey/Makefile.am
@@ -5,6 +5,10 @@ CCLD = $(top_srcdir)/scripts/wrap-link.sh $(CC)
 
 smokey_SOURCES = main.c
 
+# Make sure to list modules from the most dependent to the
+# least. e.g. net_common should appear after all net_* modules,
+# memcheck should appear after all heapmem-* modules.
+
 COBALT_SUBDIRS =   \
arith   \
bufp\
@@ -12,6 +16,9 @@ COBALT_SUBDIRS =  \
fpu-stress  \
iddp\
leaks   \
+   memory-heapmem  \
+   memory-tlsf \
+   memcheck\
net_packet_dgram\
net_packet_raw  \
net_udp \
@@ -31,11 +38,19 @@ COBALT_SUBDIRS =\
vdso-access \
xddp
 
+if XENO_PSHARED
+COBALT_SUBDIRS += memory-pshared
+endif
+
 if CONFIG_XENO_LIBS_DLOPEN
 COBALT_SUBDIRS += dlopen
 endif
 
-MERCURY_SUBDIRS =
+MERCURY_SUBDIRS = memory-heapmem memory-tlsf
+if XENO_PSHARED
+MERCURY_SUBDIRS += memory-pshared
+endif
+MERCURY_SUBDIRS += memcheck
 
 DIST_SUBDIRS = $(COBALT_SUBDIRS) $(MERCURY_SUBDIRS)
 
diff --git a/testsuite/smokey/memcheck/Makefile.am 
b/testsuite/smokey/memcheck/Makefile.am
new file mode 100644
index 000..482314a
--- /dev/null
+++ b/testsuite/smokey/memcheck/Makefile.am
@@ -0,0 +1,8 @@
+noinst_LIBRARIES = libmemcheck.a
+noinst_HEADERS = memcheck.h
+
+AM_CPPFLAGS =  \
+   @XENO_USER_CFLAGS@  \
+   -I$(top_srcdir)/include
+
+libmemcheck_a_SOURCES = memcheck.c
diff --git a/testsuite/smokey/memcheck/memcheck.c 
b/testsuite/smokey/memcheck/memcheck.c
new file mode 100644
index 000..b38dcc8
--- /dev/null
+++ b/testsuite/smokey/memcheck/memcheck.c
@@ -0,0 +1,851 @@
+/*
+ * Copyright (C) 2018 Philippe Gerum 
+ *
+ * SPDX-License-Identifier: MIT
+ */
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include "memcheck.h"
+
+enum pattern {
+   alphabet_series,
+   digit_series,
+   binary_series,
+};
+
+struct chunk {
+   void *ptr;
+   enum pattern pattern;
+};
+
+struct runstats {
+   size_t heap_size;
+   size_t user_size;
+   size_t block_size;
+   int nrblocks;
+   long alloc_avg_ns;
+   long alloc_max_ns;
+   long free_avg_ns;
+   long free_max_ns;
+   int flags;
+   double overhead;
+   double fragmentation;
+   struct runstats *next;
+};
+
+static struct runstats *statistics;
+
+static int nrstats;
+
+static int max_results = 4;
+
+static inline long diff_ts(struct timespec *left, struct timespec *right)
+{
+   return (long long)(left->tv_sec - right->tv_sec) * ONE_BILLION
+   + left->tv_nsec - right->tv_nsec;
+}
+
+static inline void swap(void *left, void *right, const size_t size)
+{
+   char trans[size];
+
+   memcpy(trans, left, size);
+   memcpy(left, right, size);
+   memcpy(right, trans, size);
+}
+
+static void random_shuffle(void *vbase, size_t nmemb, const size_t size)
+{
+   struct {
+   char x[size];
+   } __attribute__((packed)) *base = vbase;
+   unsigned int j, k;
+   double u;
+
+   for(j = nmemb; j > 0; j--) {
+   u = (double)random() / RAND_MAX;
+   k = (unsigned int)

[Xenomai-git] Philippe Gerum : testsuite/smokey: add test suite for memory allocators

2018-04-26 Thread git repository hosting
Module: xenomai-3
Branch: wip/heapmem
Commit: 4756348e6de8693b957540fda92bb10f21ec16f6
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=4756348e6de8693b957540fda92bb10f21ec16f6

Author: Philippe Gerum 
Date:   Sun Apr 22 18:20:04 2018 +0200

testsuite/smokey: add test suite for memory allocators

---

 configure.ac|4 +
 testsuite/smokey/Makefile.am|   17 +-
 testsuite/smokey/memcheck/Makefile.am   |8 +
 testsuite/smokey/memcheck/memcheck.c|  851 +++
 testsuite/smokey/memcheck/memcheck.h|   65 ++
 testsuite/smokey/memory-heapmem/Makefile.am |9 +
 testsuite/smokey/memory-heapmem/heapmem.c   |   51 ++
 testsuite/smokey/memory-pshared/Makefile.am |9 +
 testsuite/smokey/memory-pshared/pshared.c   |  125 
 testsuite/smokey/memory-tlsf/Makefile.am|   10 +
 testsuite/smokey/memory-tlsf/tlsf.c |  123 
 11 files changed, 1271 insertions(+), 1 deletion(-)

diff --git a/configure.ac b/configure.ac
index 59ea776..61ebcbe 100644
--- a/configure.ac
+++ b/configure.ac
@@ -930,6 +930,10 @@ AC_CONFIG_FILES([ \
testsuite/smokey/timerfd/Makefile \
testsuite/smokey/tsc/Makefile \
testsuite/smokey/leaks/Makefile \
+   testsuite/smokey/memcheck/Makefile \
+   testsuite/smokey/memory-heapmem/Makefile \
+   testsuite/smokey/memory-tlsf/Makefile \
+   testsuite/smokey/memory-pshared/Makefile \
testsuite/smokey/fpu-stress/Makefile \
testsuite/smokey/net_udp/Makefile \
testsuite/smokey/net_packet_dgram/Makefile \
diff --git a/testsuite/smokey/Makefile.am b/testsuite/smokey/Makefile.am
index c6fe70b..d7a71fe 100644
--- a/testsuite/smokey/Makefile.am
+++ b/testsuite/smokey/Makefile.am
@@ -5,6 +5,10 @@ CCLD = $(top_srcdir)/scripts/wrap-link.sh $(CC)
 
 smokey_SOURCES = main.c
 
+# Make sure to list modules from the most dependent to the
+# least. e.g. net_common should appear after all net_* modules,
+# memcheck should appear after all heapmem-* modules.
+
 COBALT_SUBDIRS =   \
arith   \
bufp\
@@ -12,6 +16,9 @@ COBALT_SUBDIRS =  \
fpu-stress  \
iddp\
leaks   \
+   memory-heapmem  \
+   memory-tlsf \
+   memcheck\
net_packet_dgram\
net_packet_raw  \
net_udp \
@@ -31,11 +38,19 @@ COBALT_SUBDIRS =\
vdso-access \
xddp
 
+if XENO_PSHARED
+COBALT_SUBDIRS += memory-pshared
+endif
+
 if CONFIG_XENO_LIBS_DLOPEN
 COBALT_SUBDIRS += dlopen
 endif
 
-MERCURY_SUBDIRS =
+MERCURY_SUBDIRS = memory-heapmem memory-tlsf
+if XENO_PSHARED
+MERCURY_SUBDIRS += memory-pshared
+endif
+MERCURY_SUBDIRS += memcheck
 
 DIST_SUBDIRS = $(COBALT_SUBDIRS) $(MERCURY_SUBDIRS)
 
diff --git a/testsuite/smokey/memcheck/Makefile.am 
b/testsuite/smokey/memcheck/Makefile.am
new file mode 100644
index 000..482314a
--- /dev/null
+++ b/testsuite/smokey/memcheck/Makefile.am
@@ -0,0 +1,8 @@
+noinst_LIBRARIES = libmemcheck.a
+noinst_HEADERS = memcheck.h
+
+AM_CPPFLAGS =  \
+   @XENO_USER_CFLAGS@  \
+   -I$(top_srcdir)/include
+
+libmemcheck_a_SOURCES = memcheck.c
diff --git a/testsuite/smokey/memcheck/memcheck.c 
b/testsuite/smokey/memcheck/memcheck.c
new file mode 100644
index 000..b38dcc8
--- /dev/null
+++ b/testsuite/smokey/memcheck/memcheck.c
@@ -0,0 +1,851 @@
+/*
+ * Copyright (C) 2018 Philippe Gerum 
+ *
+ * SPDX-License-Identifier: MIT
+ */
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include "memcheck.h"
+
+enum pattern {
+   alphabet_series,
+   digit_series,
+   binary_series,
+};
+
+struct chunk {
+   void *ptr;
+   enum pattern pattern;
+};
+
+struct runstats {
+   size_t heap_size;
+   size_t user_size;
+   size_t block_size;
+   int nrblocks;
+   long alloc_avg_ns;
+   long alloc_max_ns;
+   long free_avg_ns;
+   long free_max_ns;
+   int flags;
+   double overhead;
+   double fragmentation;
+   struct runstats *next;
+};
+
+static struct runstats *statistics;
+
+static int nrstats;
+
+static int max_results = 4;
+
+static inline long diff_ts(struct timespec *left, struct timespec *right)
+{
+   return (long long)(left->tv_sec - right->tv_sec) * ONE_BILLION
+   + left->tv_nsec - right->tv_nsec;
+}
+
+static inline void swap(void *left, void *right, const size_t size)
+{
+   char trans[size];
+
+   memcpy(trans, left, size);
+   memcpy(left, right, size);
+   memcpy(right, trans, size);
+}
+
+static void random_shuffle(void *vbase, size_t nmemb, const size_t size)
+{
+   struct {
+   char x[size];
+   } __attribute__((packed)) *base = vbase;
+   unsigned int j, k;
+   double u;
+
+   for(j = nmemb; j > 0; j--) {
+   u = (double)random() / RAND_MAX;
+   k = (unsigned int)

[Xenomai-git] Philippe Gerum : testsuite/smokey: add test suite for memory allocators

2018-04-25 Thread git repository hosting
Module: xenomai-3
Branch: wip/heapmem
Commit: ecdc9770b12be89517135c003e1611378f744b6c
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=ecdc9770b12be89517135c003e1611378f744b6c

Author: Philippe Gerum 
Date:   Sun Apr 22 18:20:04 2018 +0200

testsuite/smokey: add test suite for memory allocators

---

 configure.ac|4 +
 testsuite/smokey/Makefile.am|   17 +-
 testsuite/smokey/memcheck/Makefile.am   |8 +
 testsuite/smokey/memcheck/memcheck.c|  851 +++
 testsuite/smokey/memcheck/memcheck.h|   65 ++
 testsuite/smokey/memory-heapmem/Makefile.am |9 +
 testsuite/smokey/memory-heapmem/heapmem.c   |   51 ++
 testsuite/smokey/memory-pshared/Makefile.am |9 +
 testsuite/smokey/memory-pshared/pshared.c   |  125 
 testsuite/smokey/memory-tlsf/Makefile.am|   10 +
 testsuite/smokey/memory-tlsf/tlsf.c |  123 
 11 files changed, 1271 insertions(+), 1 deletion(-)

diff --git a/configure.ac b/configure.ac
index 59ea776..61ebcbe 100644
--- a/configure.ac
+++ b/configure.ac
@@ -930,6 +930,10 @@ AC_CONFIG_FILES([ \
testsuite/smokey/timerfd/Makefile \
testsuite/smokey/tsc/Makefile \
testsuite/smokey/leaks/Makefile \
+   testsuite/smokey/memcheck/Makefile \
+   testsuite/smokey/memory-heapmem/Makefile \
+   testsuite/smokey/memory-tlsf/Makefile \
+   testsuite/smokey/memory-pshared/Makefile \
testsuite/smokey/fpu-stress/Makefile \
testsuite/smokey/net_udp/Makefile \
testsuite/smokey/net_packet_dgram/Makefile \
diff --git a/testsuite/smokey/Makefile.am b/testsuite/smokey/Makefile.am
index c6fe70b..d7a71fe 100644
--- a/testsuite/smokey/Makefile.am
+++ b/testsuite/smokey/Makefile.am
@@ -5,6 +5,10 @@ CCLD = $(top_srcdir)/scripts/wrap-link.sh $(CC)
 
 smokey_SOURCES = main.c
 
+# Make sure to list modules from the most dependent to the
+# least. e.g. net_common should appear after all net_* modules,
+# memcheck should appear after all heapmem-* modules.
+
 COBALT_SUBDIRS =   \
arith   \
bufp\
@@ -12,6 +16,9 @@ COBALT_SUBDIRS =  \
fpu-stress  \
iddp\
leaks   \
+   memory-heapmem  \
+   memory-tlsf \
+   memcheck\
net_packet_dgram\
net_packet_raw  \
net_udp \
@@ -31,11 +38,19 @@ COBALT_SUBDIRS =\
vdso-access \
xddp
 
+if XENO_PSHARED
+COBALT_SUBDIRS += memory-pshared
+endif
+
 if CONFIG_XENO_LIBS_DLOPEN
 COBALT_SUBDIRS += dlopen
 endif
 
-MERCURY_SUBDIRS =
+MERCURY_SUBDIRS = memory-heapmem memory-tlsf
+if XENO_PSHARED
+MERCURY_SUBDIRS += memory-pshared
+endif
+MERCURY_SUBDIRS += memcheck
 
 DIST_SUBDIRS = $(COBALT_SUBDIRS) $(MERCURY_SUBDIRS)
 
diff --git a/testsuite/smokey/memcheck/Makefile.am 
b/testsuite/smokey/memcheck/Makefile.am
new file mode 100644
index 000..482314a
--- /dev/null
+++ b/testsuite/smokey/memcheck/Makefile.am
@@ -0,0 +1,8 @@
+noinst_LIBRARIES = libmemcheck.a
+noinst_HEADERS = memcheck.h
+
+AM_CPPFLAGS =  \
+   @XENO_USER_CFLAGS@  \
+   -I$(top_srcdir)/include
+
+libmemcheck_a_SOURCES = memcheck.c
diff --git a/testsuite/smokey/memcheck/memcheck.c 
b/testsuite/smokey/memcheck/memcheck.c
new file mode 100644
index 000..9244fd8
--- /dev/null
+++ b/testsuite/smokey/memcheck/memcheck.c
@@ -0,0 +1,851 @@
+/*
+ * Copyright (C) 2018 Philippe Gerum 
+ *
+ * SPDX-License-Identifier: MIT
+ */
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include "memcheck.h"
+
+enum pattern {
+   alphabet_series,
+   digit_series,
+   binary_series,
+};
+
+struct chunk {
+   void *ptr;
+   enum pattern pattern;
+};
+
+struct runstats {
+   size_t heap_size;
+   size_t user_size;
+   size_t block_size;
+   int nrblocks;
+   long alloc_avg_ns;
+   long alloc_max_ns;
+   long free_avg_ns;
+   long free_max_ns;
+   int flags;
+   double overhead;
+   double fragmentation;
+   struct runstats *next;
+};
+
+static struct runstats *statistics;
+
+static int nrstats;
+
+static int max_results = 4;
+
+static inline long diff_ts(struct timespec *left, struct timespec *right)
+{
+   return (long long)(left->tv_sec - right->tv_sec) * ONE_BILLION
+   + left->tv_nsec - right->tv_nsec;
+}
+
+static inline void swap(void *left, void *right, const size_t size)
+{
+   char trans[size];
+
+   memcpy(trans, left, size);
+   memcpy(left, right, size);
+   memcpy(right, trans, size);
+}
+
+static void random_shuffle(void *vbase, size_t nmemb, const size_t size)
+{
+   struct {
+   char x[size];
+   } __attribute__((packed)) *base = vbase;
+   unsigned int j, k;
+   double u;
+
+   for(j = nmemb; j > 0; j--) {
+   u = (double)random() / RAND_MAX;
+   k = (unsigned int)