This looks like an SMP test. What happens on a uniprocessor build? On March 16, 2015 7:52:53 AM CDT, Sebastian Huber <s...@rtems.org> wrote: >Module: rtems >Branch: master >Commit: dc5e5f44485b8f9709da767f79595d2fa8aff74d >Changeset: >http://git.rtems.org/rtems/commit/?id=dc5e5f44485b8f9709da767f79595d2fa8aff74d > >Author: Sebastian Huber <sebastian.hu...@embedded-brains.de> >Date: Mon Mar 16 13:52:19 2015 +0100 > >tmtests/tmfine01: New test > >--- > > testsuites/tmtests/Makefile.am | 1 + > testsuites/tmtests/configure.ac | 1 + > testsuites/tmtests/tmfine01/Makefile.am | 19 + > testsuites/tmtests/tmfine01/init.c | 478 +++++++ > testsuites/tmtests/tmfine01/tmfine01.doc | 21 + >testsuites/tmtests/tmfine01/tmfine01.scn | 2092 >++++++++++++++++++++++++++++++ > 6 files changed, 2612 insertions(+) > >diff --git a/testsuites/tmtests/Makefile.am >b/testsuites/tmtests/Makefile.am >index bab9e80..c1eb7b5 100644 >--- a/testsuites/tmtests/Makefile.am >+++ b/testsuites/tmtests/Makefile.am >@@ -4,6 +4,7 @@ _SUBDIRS = tmck tmoverhd tm01 tm02 tm03 tm04 tm05 tm06 >tm07 tm08 tm09 tm10 \ >tm11 tm12 tm13 tm14 tm15 tm16 tm17 tm18 tm19 tm20 tm21 tm22 tm23 tm24 \ > tm25 tm26 tm27 tm28 tm29 tm30 tm31 tm32 tm33 tm34 tm35 tm36 > _SUBDIRS += tmcontext01 >+_SUBDIRS += tmfine01 > > include $(top_srcdir)/../automake/test-subdirs.am > include $(top_srcdir)/../automake/local.am >diff --git a/testsuites/tmtests/configure.ac >b/testsuites/tmtests/configure.ac >index 3b33445..5c6138e 100644 >--- a/testsuites/tmtests/configure.ac >+++ b/testsuites/tmtests/configure.ac >@@ -27,6 +27,7 @@ AC_SUBST(OPERATION_COUNT) > > # Explicitly list all Makefiles here > AC_CONFIG_FILES([Makefile >+tmfine01/Makefile > tmcontext01/Makefile > tmck/Makefile > tmoverhd/Makefile >diff --git a/testsuites/tmtests/tmfine01/Makefile.am >b/testsuites/tmtests/tmfine01/Makefile.am >new file mode 100644 >index 0000000..d6db7c8 >--- /dev/null >+++ b/testsuites/tmtests/tmfine01/Makefile.am >@@ -0,0 +1,19 @@ >+rtems_tests_PROGRAMS = tmfine01 >+tmfine01_SOURCES = init.c >+ >+dist_rtems_tests_DATA = tmfine01.scn tmfine01.doc >+ >+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg >+include $(top_srcdir)/../automake/compile.am >+include $(top_srcdir)/../automake/leaf.am >+ >+AM_CPPFLAGS += -I$(top_srcdir)/../support/include >+ >+LINK_OBJS = $(tmfine01_OBJECTS) >+LINK_LIBS = $(tmfine01_LDLIBS) >+ >+tmfine01$(EXEEXT): $(tmfine01_OBJECTS) $(tmfine01_DEPENDENCIES) >+ @rm -f tmfine01$(EXEEXT) >+ $(make-exe) >+ >+include $(top_srcdir)/../automake/local.am >diff --git a/testsuites/tmtests/tmfine01/init.c >b/testsuites/tmtests/tmfine01/init.c >new file mode 100644 >index 0000000..ed5f429 >--- /dev/null >+++ b/testsuites/tmtests/tmfine01/init.c >@@ -0,0 +1,478 @@ >+/* >+ * Copyright (c) 2015 embedded brains GmbH. All rights reserved. >+ * >+ * embedded brains GmbH >+ * Dornierstr. 4 >+ * 82178 Puchheim >+ * Germany >+ * <rt...@embedded-brains.de> >+ * >+ * The license and distribution terms for this file may be >+ * found in the file LICENSE in this distribution or at >+ * http://www.rtems.org/license/LICENSE. >+ */ >+ >+#ifdef HAVE_CONFIG_H >+ #include "config.h" >+#endif >+ >+#include "tmacros.h" >+ >+#include <stdio.h> >+#include <inttypes.h> >+ >+#include <rtems/test.h> >+ >+const char rtems_test_name[] = "TMFINE 1"; >+ >+#define CPU_COUNT 32 >+ >+#define MSG_COUNT 3 >+ >+typedef struct { >+ uint32_t value; >+} test_msg; >+ >+typedef struct { >+ rtems_test_parallel_context base; >+ rtems_id master; >+ rtems_id sema[CPU_COUNT]; >+ rtems_id mq[CPU_COUNT]; >+ uint32_t self_event_ops[CPU_COUNT][CPU_COUNT]; >+ uint32_t all_to_one_event_ops[CPU_COUNT][CPU_COUNT]; >+ uint32_t one_mutex_ops[CPU_COUNT][CPU_COUNT]; >+ uint32_t many_mutex_ops[CPU_COUNT][CPU_COUNT]; >+ uint32_t self_msg_ops[CPU_COUNT][CPU_COUNT]; >+ uint32_t many_to_one_msg_ops[CPU_COUNT][CPU_COUNT]; >+} test_context; >+ >+static test_context test_instance; >+ >+static rtems_interval test_duration(void) >+{ >+ return rtems_clock_get_ticks_per_second(); >+} >+ >+static rtems_interval test_init( >+ rtems_test_parallel_context *base, >+ void *arg, >+ size_t active_workers >+) >+{ >+ return test_duration(); >+} >+ >+static void test_fini( >+ const char *name, >+ uint32_t *counters, >+ size_t active_workers >+) >+{ >+ size_t i; >+ >+ printf(" <%s activeWorker=\"%zu\">\n", name, active_workers); >+ >+ for (i = 0; i < active_workers; ++i) { >+ printf( >+ " <Counter worker=\"%zu\">%" PRIu32 "</Counter>\n", >+ i, >+ counters[i] >+ ); >+ } >+ >+ printf(" </%s>\n", name); >+} >+ >+static void test_self_event_body( >+ rtems_test_parallel_context *base, >+ void *arg, >+ size_t active_workers, >+ size_t worker_index >+) >+{ >+ test_context *ctx = (test_context *) base; >+ rtems_id id = rtems_task_self(); >+ uint32_t counter = 0; >+ >+ while (!rtems_test_parallel_stop_job(&ctx->base)) { >+ rtems_status_code sc; >+ rtems_event_set out; >+ >+ ++counter; >+ >+ sc = rtems_event_send(id, RTEMS_EVENT_0); >+ rtems_test_assert(sc == RTEMS_SUCCESSFUL); >+ >+ sc = rtems_event_receive( >+ RTEMS_EVENT_0, >+ RTEMS_WAIT | RTEMS_EVENT_ANY, >+ RTEMS_NO_TIMEOUT, >+ &out >+ ); >+ rtems_test_assert(sc == RTEMS_SUCCESSFUL); >+ } >+ >+ ctx->self_event_ops[active_workers - 1][worker_index] = counter; >+} >+ >+static void test_self_event_fini( >+ rtems_test_parallel_context *base, >+ void *arg, >+ size_t active_workers >+) >+{ >+ test_context *ctx = (test_context *) base; >+ >+ test_fini( >+ "SelfEvent", >+ &ctx->self_event_ops[active_workers - 1][0], >+ active_workers >+ ); >+} >+ >+static void test_all_to_one_event_body( >+ rtems_test_parallel_context *base, >+ void *arg, >+ size_t active_workers, >+ size_t worker_index >+) >+{ >+ test_context *ctx = (test_context *) base; >+ rtems_id id = rtems_task_self(); >+ bool is_master = rtems_test_parallel_is_master_worker(worker_index); >+ uint32_t counter = 0; >+ >+ while (!rtems_test_parallel_stop_job(&ctx->base)) { >+ rtems_status_code sc; >+ >+ ++counter; >+ >+ sc = rtems_event_send(id, RTEMS_EVENT_0); >+ rtems_test_assert(sc == RTEMS_SUCCESSFUL); >+ >+ if (is_master) { >+ rtems_event_set out; >+ >+ sc = rtems_event_receive( >+ RTEMS_ALL_EVENTS, >+ RTEMS_WAIT | RTEMS_EVENT_ANY, >+ RTEMS_NO_TIMEOUT, >+ &out >+ ); >+ rtems_test_assert(sc == RTEMS_SUCCESSFUL); >+ } >+ } >+ >+ ctx->all_to_one_event_ops[active_workers - 1][worker_index] = >counter; >+} >+ >+static void test_all_to_one_event_fini( >+ rtems_test_parallel_context *base, >+ void *arg, >+ size_t active_workers >+) >+{ >+ test_context *ctx = (test_context *) base; >+ >+ test_fini( >+ "AllToOneEvent", >+ &ctx->all_to_one_event_ops[active_workers - 1][0], >+ active_workers >+ ); >+} >+ >+static void test_one_mutex_body( >+ rtems_test_parallel_context *base, >+ void *arg, >+ size_t active_workers, >+ size_t worker_index >+) >+{ >+ test_context *ctx = (test_context *) base; >+ rtems_id id = ctx->sema[0]; >+ uint32_t counter = 0; >+ >+ while (!rtems_test_parallel_stop_job(&ctx->base)) { >+ rtems_status_code sc; >+ >+ ++counter; >+ >+ sc = rtems_semaphore_obtain(id, RTEMS_WAIT, RTEMS_NO_TIMEOUT); >+ rtems_test_assert(sc == RTEMS_SUCCESSFUL); >+ >+ sc = rtems_semaphore_release(id); >+ rtems_test_assert(sc == RTEMS_SUCCESSFUL); >+ } >+ >+ ctx->one_mutex_ops[active_workers - 1][worker_index] = counter; >+} >+ >+static void test_one_mutex_fini( >+ rtems_test_parallel_context *base, >+ void *arg, >+ size_t active_workers >+) >+{ >+ test_context *ctx = (test_context *) base; >+ >+ test_fini( >+ "OneMutex", >+ &ctx->one_mutex_ops[active_workers - 1][0], >+ active_workers >+ ); >+} >+ >+static void test_many_mutex_body( >+ rtems_test_parallel_context *base, >+ void *arg, >+ size_t active_workers, >+ size_t worker_index >+) >+{ >+ test_context *ctx = (test_context *) base; >+ rtems_id id = ctx->sema[worker_index]; >+ uint32_t counter = 0; >+ >+ while (!rtems_test_parallel_stop_job(&ctx->base)) { >+ rtems_status_code sc; >+ >+ ++counter; >+ >+ sc = rtems_semaphore_obtain(id, RTEMS_WAIT, RTEMS_NO_TIMEOUT); >+ rtems_test_assert(sc == RTEMS_SUCCESSFUL); >+ >+ sc = rtems_semaphore_release(id); >+ rtems_test_assert(sc == RTEMS_SUCCESSFUL); >+ } >+ >+ ctx->many_mutex_ops[active_workers - 1][worker_index] = counter; >+} >+ >+static void test_many_mutex_fini( >+ rtems_test_parallel_context *base, >+ void *arg, >+ size_t active_workers >+) >+{ >+ test_context *ctx = (test_context *) base; >+ >+ test_fini( >+ "ManyMutex", >+ &ctx->many_mutex_ops[active_workers - 1][0], >+ active_workers >+ ); >+} >+ >+static void test_self_msg_body( >+ rtems_test_parallel_context *base, >+ void *arg, >+ size_t active_workers, >+ size_t worker_index >+) >+{ >+ test_context *ctx = (test_context *) base; >+ rtems_id id = ctx->mq[worker_index]; >+ uint32_t counter = 0; >+ >+ while (!rtems_test_parallel_stop_job(&ctx->base)) { >+ rtems_status_code sc; >+ test_msg msg = { .value = 0 }; >+ size_t n; >+ >+ ++counter; >+ >+ sc = rtems_message_queue_send(id, &msg, sizeof(msg)); >+ rtems_test_assert(sc == RTEMS_SUCCESSFUL || sc == RTEMS_TOO_MANY); >+ >+ n = sizeof(msg); >+ sc = rtems_message_queue_receive( >+ id, >+ &msg, >+ &n, >+ RTEMS_WAIT, >+ RTEMS_NO_TIMEOUT >+ ); >+ rtems_test_assert(sc == RTEMS_SUCCESSFUL); >+ rtems_test_assert(n == sizeof(msg)); >+ } >+ >+ ctx->self_msg_ops[active_workers - 1][worker_index] = counter; >+} >+ >+static void test_self_msg_fini( >+ rtems_test_parallel_context *base, >+ void *arg, >+ size_t active_workers >+) >+{ >+ test_context *ctx = (test_context *) base; >+ >+ test_fini( >+ "SelfMsg", >+ &ctx->self_msg_ops[active_workers - 1][0], >+ active_workers >+ ); >+} >+ >+static void test_many_to_one_msg_body( >+ rtems_test_parallel_context *base, >+ void *arg, >+ size_t active_workers, >+ size_t worker_index >+) >+{ >+ test_context *ctx = (test_context *) base; >+ rtems_id id = ctx->mq[0]; >+ bool is_master = rtems_test_parallel_is_master_worker(worker_index); >+ uint32_t counter = 0; >+ >+ while (!rtems_test_parallel_stop_job(&ctx->base)) { >+ rtems_status_code sc; >+ test_msg msg = { .value = 0 }; >+ size_t n; >+ >+ ++counter; >+ >+ sc = rtems_message_queue_send(id, &msg, sizeof(msg)); >+ rtems_test_assert(sc == RTEMS_SUCCESSFUL || sc == RTEMS_TOO_MANY); >+ >+ if (is_master) { >+ n = sizeof(msg); >+ sc = rtems_message_queue_receive( >+ id, >+ &msg, >+ &n, >+ RTEMS_WAIT, >+ RTEMS_NO_TIMEOUT >+ ); >+ rtems_test_assert(sc == RTEMS_SUCCESSFUL); >+ rtems_test_assert(n == sizeof(msg)); >+ } >+ } >+ >+ ctx->many_to_one_msg_ops[active_workers - 1][worker_index] = >counter; >+} >+ >+static void test_many_to_one_msg_fini( >+ rtems_test_parallel_context *base, >+ void *arg, >+ size_t active_workers >+) >+{ >+ test_context *ctx = (test_context *) base; >+ >+ test_fini( >+ "ManyToOneMsg", >+ &ctx->many_to_one_msg_ops[active_workers - 1][0], >+ active_workers >+ ); >+} >+ >+static const rtems_test_parallel_job test_jobs[] = { >+ { >+ .init = test_init, >+ .body = test_self_event_body, >+ .fini = test_self_event_fini, >+ .cascade = true >+ }, { >+ .init = test_init, >+ .body = test_all_to_one_event_body, >+ .fini = test_all_to_one_event_fini, >+ .cascade = true >+ }, { >+ .init = test_init, >+ .body = test_one_mutex_body, >+ .fini = test_one_mutex_fini, >+ .cascade = true >+ }, { >+ .init = test_init, >+ .body = test_many_mutex_body, >+ .fini = test_many_mutex_fini, >+ .cascade = true >+ }, { >+ .init = test_init, >+ .body = test_self_msg_body, >+ .fini = test_self_msg_fini, >+ .cascade = true >+ }, { >+ .init = test_init, >+ .body = test_many_to_one_msg_body, >+ .fini = test_many_to_one_msg_fini, >+ .cascade = true >+ } >+}; >+ >+static void Init(rtems_task_argument arg) >+{ >+ test_context *ctx = &test_instance; >+ const char *test = "TestTimeFine01"; >+ size_t i; >+ >+ TEST_BEGIN(); >+ >+ ctx->master = rtems_task_self(); >+ >+ for (i = 0; i < CPU_COUNT; ++i) { >+ rtems_status_code sc; >+ >+ sc = rtems_semaphore_create( >+ rtems_build_name('T', 'E', 'S', 'T'), >+ 1, >+ RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | >RTEMS_PRIORITY, >+ 0, >+ &ctx->sema[i] >+ ); >+ rtems_test_assert(sc == RTEMS_SUCCESSFUL); >+ >+ sc = rtems_message_queue_create( >+ rtems_build_name('T', 'E', 'S', 'T'), >+ MSG_COUNT, >+ sizeof(test_msg), >+ RTEMS_DEFAULT_ATTRIBUTES, >+ &ctx->mq[i] >+ ); >+ rtems_test_assert(sc == RTEMS_SUCCESSFUL); >+ } >+ >+ printf("<%s>\n", test); >+ >+ rtems_test_parallel( >+ &ctx->base, >+ 1, >+ &test_jobs[0], >+ RTEMS_ARRAY_SIZE(test_jobs) >+ ); >+ >+ printf("</%s>\n", test); >+ >+ TEST_END(); >+ rtems_test_exit(0); >+} >+ >+#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER >+#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER >+ >+#define CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM >+ >+#define CONFIGURE_MAXIMUM_TASKS CPU_COUNT >+ >+#define CONFIGURE_MAXIMUM_TIMERS 1 >+ >+#define CONFIGURE_MAXIMUM_SEMAPHORES CPU_COUNT >+ >+#define CONFIGURE_MAXIMUM_MESSAGE_QUEUES CPU_COUNT >+ >+#define CONFIGURE_MESSAGE_BUFFER_MEMORY \ >+ CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE(MSG_COUNT, sizeof(test_msg)) >+ >+#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION >+ >+#define CONFIGURE_RTEMS_INIT_TASKS_TABLE >+ >+#define CONFIGURE_SMP_APPLICATION >+ >+#define CONFIGURE_SMP_MAXIMUM_PROCESSORS CPU_COUNT >+ >+#define CONFIGURE_INIT >+ >+#include <rtems/confdefs.h> >diff --git a/testsuites/tmtests/tmfine01/tmfine01.doc >b/testsuites/tmtests/tmfine01/tmfine01.doc >new file mode 100644 >index 0000000..1bf39c6 >--- /dev/null >+++ b/testsuites/tmtests/tmfine01/tmfine01.doc >@@ -0,0 +1,21 @@ >+This file describes the directives and concepts tested by this test >set. >+ >+test set name: tmfine01 >+ >+directives: >+ >+ - rtems_event_send() >+ - rtems_event_receive() >+ - rtems_semaphore_obtain() >+ - rtems_semaphore_release() >+ - rtems_message_queue_send() >+ - rtems_message_queue_receive() >+ >+concepts: >+ >+ - Count event send and receive operations to self. >+ - Count event send and receive operations from all tasks to one. >+ - Count mutex obtain and release operations with a private mutex. >+ - Count mutex obtain and release operations with a global mutex. >+ - Count message send and receive operations with a private message >queue. >+ - Count message send and receive operations with a global message >queue. >diff --git a/testsuites/tmtests/tmfine01/tmfine01.scn >b/testsuites/tmtests/tmfine01/tmfine01.scn >new file mode 100644 >index 0000000..5b7ddba >--- /dev/null >+++ b/testsuites/tmtests/tmfine01/tmfine01.scn >@@ -0,0 +1,2092 @@ >+*** BEGIN OF TEST TMFINE 1 *** >+<TestTimeFine01> >+ <SelfEvent activeWorker="1"> >+ <Counter worker="0">2439242</Counter> >+ </SelfEvent> >+ <SelfEvent activeWorker="2"> >+ <Counter worker="0">2434919</Counter> >+ <Counter worker="1">2428545</Counter> >+ </SelfEvent> >+ <SelfEvent activeWorker="3"> >+ <Counter worker="0">2450125</Counter> >+ <Counter worker="1">2397577</Counter> >+ <Counter worker="2">3396553</Counter> >+ </SelfEvent> >+ <SelfEvent activeWorker="4"> >+ <Counter worker="0">2440893</Counter> >+ <Counter worker="1">2377334</Counter> >+ <Counter worker="2">3356199</Counter> >+ <Counter worker="3">2412298</Counter> >+ </SelfEvent> >+ <SelfEvent activeWorker="5"> >+ <Counter worker="0">2431918</Counter> >+ <Counter worker="1">2361036</Counter> >+ <Counter worker="2">3307873</Counter> >+ <Counter worker="3">2361111</Counter> >+ <Counter worker="4">3308071</Counter> >+ </SelfEvent> >+ <SelfEvent activeWorker="6"> >+ <Counter worker="0">2447343</Counter> >+ <Counter worker="1">2358781</Counter> >+ <Counter worker="2">3312263</Counter> >+ <Counter worker="3">2364497</Counter> >+ <Counter worker="4">3323441</Counter> >+ <Counter worker="5">2393829</Counter> >+ </SelfEvent> >+ <SelfEvent activeWorker="7"> >+ <Counter worker="0">2438184</Counter> >+ <Counter worker="1">2341618</Counter> >+ <Counter worker="2">3284048</Counter> >+ <Counter worker="3">2344390</Counter> >+ <Counter worker="4">3289008</Counter> >+ <Counter worker="5">2341336</Counter> >+ <Counter worker="6">3287729</Counter> >+ </SelfEvent> >+ <SelfEvent activeWorker="8"> >+ <Counter worker="0">2429033</Counter> >+ <Counter worker="1">2317275</Counter> >+ <Counter worker="2">3250911</Counter> >+ <Counter worker="3">2322296</Counter> >+ <Counter worker="4">3258434</Counter> >+ <Counter worker="5">2316913</Counter> >+ <Counter worker="6">3256091</Counter> >+ <Counter worker="7">2345590</Counter> >+ </SelfEvent> >+ <SelfEvent activeWorker="9"> >+ <Counter worker="0">2444659</Counter> >+ <Counter worker="1">2316064</Counter> >+ <Counter worker="2">3249718</Counter> >+ <Counter worker="3">2321055</Counter> >+ <Counter worker="4">3255668</Counter> >+ <Counter worker="5">2314191</Counter> >+ <Counter worker="6">3253259</Counter> >+ <Counter worker="7">2294458</Counter> >+ <Counter worker="8">3261977</Counter> >+ </SelfEvent> >+ <SelfEvent activeWorker="10"> >+ <Counter worker="0">2435503</Counter> >+ <Counter worker="1">2307485</Counter> >+ <Counter worker="2">3237568</Counter> >+ <Counter worker="3">2312408</Counter> >+ <Counter worker="4">3243512</Counter> >+ <Counter worker="5">2305652</Counter> >+ <Counter worker="6">3241019</Counter> >+ <Counter worker="7">2286440</Counter> >+ <Counter worker="8">3248786</Counter> >+ <Counter worker="9">3458482</Counter> >+ </SelfEvent> >+ <SelfEvent activeWorker="11"> >+ <Counter worker="0">2450590</Counter> >+ <Counter worker="1">2321791</Counter> >+ <Counter worker="2">3257786</Counter> >+ <Counter worker="3">2326880</Counter> >+ <Counter worker="4">3263812</Counter> >+ <Counter worker="5">2320008</Counter> >+ <Counter worker="6">3261324</Counter> >+ <Counter worker="7">2300522</Counter> >+ <Counter worker="8">3269161</Counter> >+ <Counter worker="9">3359031</Counter> >+ <Counter worker="10">2399300</Counter> >+ </SelfEvent> >+ <SelfEvent activeWorker="12"> >+ <Counter worker="0">2441277</Counter> >+ <Counter worker="1">2312997</Counter> >+ <Counter worker="2">3245449</Counter> >+ <Counter worker="3">2318044</Counter> >+ <Counter worker="4">3251478</Counter> >+ <Counter worker="5">2311239</Counter> >+ <Counter worker="6">3248935</Counter> >+ <Counter worker="7">2291697</Counter> >+ <Counter worker="8">3256744</Counter> >+ <Counter worker="9">3356755</Counter> >+ <Counter worker="10">2376798</Counter> >+ <Counter worker="11">2410036</Counter> >+ </SelfEvent> >+ <SelfEvent activeWorker="13"> >+ <Counter worker="0">2432106</Counter> >+ <Counter worker="1">2304202</Counter> >+ <Counter worker="2">3233069</Counter> >+ <Counter worker="3">2309208</Counter> >+ <Counter worker="4">3239016</Counter> >+ <Counter worker="5">2302445</Counter> >+ <Counter worker="6">3236547</Counter> >+ <Counter worker="7">2283302</Counter> >+ <Counter worker="8">3244262</Counter> >+ <Counter worker="9">3315548</Counter> >+ <Counter worker="10">2361237</Counter> >+ <Counter worker="11">2361293</Counter> >+ <Counter worker="12">3315613</Counter> >+ </SelfEvent> >+ <SelfEvent activeWorker="14"> >+ <Counter worker="0">2447142</Counter> >+ <Counter worker="1">2318609</Counter> >+ <Counter worker="2">3253297</Counter> >+ <Counter worker="3">2323619</Counter> >+ <Counter worker="4">3259235</Counter> >+ <Counter worker="5">2316796</Counter> >+ <Counter worker="6">3256791</Counter> >+ <Counter worker="7">2297409</Counter> >+ <Counter worker="8">3264655</Counter> >+ <Counter worker="9">3321434</Counter> >+ <Counter worker="10">2357135</Counter> >+ <Counter worker="11">2365225</Counter> >+ <Counter worker="12">3328122</Counter> >+ <Counter worker="13">2394746</Counter> >+ </SelfEvent> >+ <SelfEvent activeWorker="15"> >+ <Counter worker="0">2437900</Counter> >+ <Counter worker="1">2309745</Counter> >+ <Counter worker="2">3240816</Counter> >+ <Counter worker="3">2314700</Counter> >+ <Counter worker="4">3246815</Counter> >+ <Counter worker="5">2307939</Counter> >+ <Counter worker="6">3244335</Counter> >+ <Counter worker="7">2288528</Counter> >+ <Counter worker="8">3252163</Counter> >+ <Counter worker="9">3289024</Counter> >+ <Counter worker="10">2340349</Counter> >+ <Counter worker="11">2344734</Counter> >+ <Counter worker="12">3292260</Counter> >+ <Counter worker="13">2342291</Counter> >+ <Counter worker="14">3289734</Counter> >+ </SelfEvent> >+ <SelfEvent activeWorker="16"> >+ <Counter worker="0">2452934</Counter> >+ <Counter worker="1">2324127</Counter> >+ <Counter worker="2">3261061</Counter> >+ <Counter worker="3">2329185</Counter> >+ <Counter worker="4">3267123</Counter> >+ <Counter worker="5">2322273</Counter> >+ <Counter worker="6">3264567</Counter> >+ <Counter worker="7">2302818</Counter> >+ <Counter worker="8">3272466</Counter> >+ <Counter worker="9">3292144</Counter> >+ <Counter worker="10">2339664</Counter> >+ <Counter worker="11">2347345</Counter> >+ <Counter worker="12">3296732</Counter> >+ <Counter worker="13">2343270</Counter> >+ <Counter worker="14">3291900</Counter> >+ <Counter worker="15">2369297</Counter> >+ </SelfEvent> >+ <SelfEvent activeWorker="17"> >+ <Counter worker="0">2443837</Counter> >+ <Counter worker="1">2315316</Counter> >+ <Counter worker="2">3248712</Counter> >+ <Counter worker="3">2320304</Counter> >+ <Counter worker="4">3254608</Counter> >+ <Counter worker="5">2313449</Counter> >+ <Counter worker="6">3252138</Counter> >+ <Counter worker="7">2294058</Counter> >+ <Counter worker="8">3259930</Counter> >+ <Counter worker="9">3257466</Counter> >+ <Counter worker="10">2313585</Counter> >+ <Counter worker="11">2323428</Counter> >+ <Counter worker="12">3262292</Counter> >+ <Counter worker="13">2318016</Counter> >+ <Counter worker="14">3256271</Counter> >+ <Counter worker="15">2294261</Counter> >+ <Counter worker="16">3263853</Counter> >+ </SelfEvent> >+ <SelfEvent activeWorker="18"> >+ <Counter worker="0">2409157</Counter> >+ <Counter worker="1">2306402</Counter> >+ <Counter worker="2">3236233</Counter> >+ <Counter worker="3">2311467</Counter> >+ <Counter worker="4">3242224</Counter> >+ <Counter worker="5">2304599</Counter> >+ <Counter worker="6">3239755</Counter> >+ <Counter worker="7">2285337</Counter> >+ <Counter worker="8">3247547</Counter> >+ <Counter worker="9">3245036</Counter> >+ <Counter worker="10">2304780</Counter> >+ <Counter worker="11">2314538</Counter> >+ <Counter worker="12">3249851</Counter> >+ <Counter worker="13">2309182</Counter> >+ <Counter worker="14">3243840</Counter> >+ <Counter worker="15">2285742</Counter> >+ <Counter worker="16">3250366</Counter> >+ <Counter worker="17">3418604</Counter> >+ </SelfEvent> >+ <SelfEvent activeWorker="19"> >+ <Counter worker="0">2416041</Counter> >+ <Counter worker="1">2320825</Counter> >+ <Counter worker="2">3256450</Counter> >+ <Counter worker="3">2325923</Counter> >+ <Counter worker="4">3262472</Counter> >+ <Counter worker="5">2319042</Counter> >+ <Counter worker="6">3259985</Counter> >+ <Counter worker="7">2299561</Counter> >+ <Counter worker="8">3267789</Counter> >+ <Counter worker="9">3265334</Counter> >+ <Counter worker="10">2319171</Counter> >+ <Counter worker="11">2329005</Counter> >+ <Counter worker="12">3270136</Counter> >+ <Counter worker="13">2323666</Counter> >+ <Counter worker="14">3264217</Counter> >+ <Counter worker="15">2300027</Counter> >+ <Counter worker="16">3270762</Counter> >+ <Counter worker="17">3357941</Counter> >+ <Counter worker="18">2387118</Counter> >+ </SelfEvent> >+ <SelfEvent activeWorker="20"> >+ <Counter worker="0">2397524</Counter> >+ <Counter worker="1">2312138</Counter> >+ <Counter worker="2">3244108</Counter> >+ <Counter worker="3">2317105</Counter> >+ <Counter worker="4">3250112</Counter> >+ <Counter worker="5">2310293</Counter> >+ <Counter worker="6">3247627</Counter> >+ <Counter worker="7">2290992</Counter> >+ <Counter worker="8">3255397</Counter> >+ <Counter worker="9">3252906</Counter> >+ <Counter worker="10">2310305</Counter> >+ <Counter worker="11">2320096</Counter> >+ <Counter worker="12">3257660</Counter> >+ <Counter worker="13">2314735</Counter> >+ <Counter worker="14">3251716</Counter> >+ <Counter worker="15">2291237</Counter> >+ <Counter worker="16">3258287</Counter> >+ <Counter worker="17">3313158</Counter> >+ <Counter worker="18">2359786</Counter> >+ <Counter worker="19">3389669</Counter> >+ </SelfEvent> >+ <SelfEvent activeWorker="21"> >+ <Counter worker="0">2382159</Counter> >+ <Counter worker="1">2303120</Counter> >+ <Counter worker="2">3231640</Counter> >+ <Counter worker="3">2308207</Counter> >+ <Counter worker="4">3237659</Counter> >+ <Counter worker="5">2301352</Counter> >+ <Counter worker="6">3235144</Counter> >+ <Counter worker="7">2282053</Counter> >+ <Counter worker="8">3243009</Counter> >+ <Counter worker="9">3240435</Counter> >+ <Counter worker="10">2301457</Counter> >+ <Counter worker="11">2311253</Counter> >+ <Counter worker="12">3245235</Counter> >+ <Counter worker="13">2305890</Counter> >+ <Counter worker="14">3239180</Counter> >+ <Counter worker="15">2282503</Counter> >+ <Counter worker="16">3245865</Counter> >+ <Counter worker="17">3290485</Counter> >+ <Counter worker="18">2344582</Counter> >+ <Counter worker="19">3306875</Counter> >+ <Counter worker="20">2351956</Counter> >+ </SelfEvent> >+ <SelfEvent activeWorker="22"> >+ <Counter worker="0">2386032</Counter> >+ <Counter worker="1">2317614</Counter> >+ <Counter worker="2">3251822</Counter> >+ <Counter worker="3">2322596</Counter> >+ <Counter worker="4">3257901</Counter> >+ <Counter worker="5">2315748</Counter> >+ <Counter worker="6">3255336</Counter> >+ <Counter worker="7">2296302</Counter> >+ <Counter worker="8">3263171</Counter> >+ <Counter worker="9">3260758</Counter> >+ <Counter worker="10">2315888</Counter> >+ <Counter worker="11">2325681</Counter> >+ <Counter worker="12">3265516</Counter> >+ <Counter worker="13">2320325</Counter> >+ <Counter worker="14">3259551</Counter> >+ <Counter worker="15">2296755</Counter> >+ <Counter worker="16">3266120</Counter> >+ <Counter worker="17">3295460</Counter> >+ <Counter worker="18">2348363</Counter> >+ <Counter worker="19">3310445</Counter> >+ <Counter worker="20">2357213</Counter> >+ <Counter worker="21">2385562</Counter> >+ </SelfEvent> >+ <SelfEvent activeWorker="23"> >+ <Counter worker="0">2373352</Counter> >+ <Counter worker="1">2308745</Counter> >+ <Counter worker="2">3239474</Counter> >+ <Counter worker="3">2313746</Counter> >+ <Counter worker="4">3245461</Counter> >+ <Counter worker="5">2306904</Counter> >+ <Counter worker="6">3242982</Counter> >+ <Counter worker="7">2287602</Counter> >+ <Counter worker="8">3250752</Counter> >+ <Counter worker="9">3248257</Counter> >+ <Counter worker="10">2307030</Counter> >+ <Counter worker="11">2316845</Counter> >+ <Counter worker="12">3253073</Counter> >+ <Counter worker="13">2311491</Counter> >+ <Counter worker="14">3247144</Counter> >+ <Counter worker="15">2288045</Counter> >+ <Counter worker="16">3253659</Counter> >+ <Counter worker="17">3263347</Counter> >+ <Counter worker="18">2325333</Counter> >+ <Counter worker="19">3275731</Counter> >+ <Counter worker="20">2333369</Counter> >+ <Counter worker="21">2326288</Counter> >+ <Counter worker="22">3272382</Counter> >+ </SelfEvent> >+ <SelfEvent activeWorker="24"> >+ <Counter worker="0">2323859</Counter> >+ <Counter worker="1">2323201</Counter> >+ <Counter worker="2">3259747</Counter> >+ <Counter worker="3">2328242</Counter> >+ <Counter worker="4">3265771</Counter> >+ <Counter worker="5">2321389</Counter> >+ <Counter worker="6">3263306</Counter> >+ <Counter worker="7">2301985</Counter> >+ <Counter worker="8">3271074</Counter> >+ <Counter worker="9">3268539</Counter> >+ <Counter worker="10">2321391</Counter> >+ <Counter worker="11">2331282</Counter> >+ <Counter worker="12">3273360</Counter> >+ <Counter worker="13">2325840</Counter> >+ <Counter worker="14">3267364</Counter> >+ <Counter worker="15">2302301</Counter> >+ <Counter worker="16">3273913</Counter> >+ <Counter worker="17">3261834</Counter> >+ <Counter worker="18">2324542</Counter> >+ <Counter worker="19">3272797</Counter> >+ <Counter worker="20">2333061</Counter> >+ <Counter worker="21">2325351</Counter> >+ <Counter worker="22">3268567</Counter> >+ <Counter worker="23">3251123</Counter> >+ </SelfEvent> >+ <AllToOneEvent activeWorker="1"> >+ <Counter worker="0">2454533</Counter> >+ </AllToOneEvent> >+ <AllToOneEvent activeWorker="2"> >+ <Counter worker="0">2444811</Counter> >+ <Counter worker="1">4552873</Counter> >+ </AllToOneEvent> >+ <AllToOneEvent activeWorker="3"> >+ <Counter worker="0">2460307</Counter> >+ <Counter worker="1">4507332</Counter> >+ <Counter worker="2">6760988</Counter> >+ </AllToOneEvent> >+ <AllToOneEvent activeWorker="4"> >+ <Counter worker="0">2451147</Counter> >+ <Counter worker="1">4433793</Counter> >+ <Counter worker="2">6650657</Counter> >+ <Counter worker="3">4545259</Counter> >+ </AllToOneEvent> >+ <AllToOneEvent activeWorker="5"> >+ <Counter worker="0">2441987</Counter> >+ <Counter worker="1">4415771</Counter> >+ <Counter worker="2">6623623</Counter> >+ <Counter worker="3">4415780</Counter> >+ <Counter worker="4">6623658</Counter> >+ </AllToOneEvent> >+ <AllToOneEvent activeWorker="6"> >+ <Counter worker="0">2457480</Counter> >+ <Counter worker="1">4407822</Counter> >+ <Counter worker="2">6601288</Counter> >+ <Counter worker="3">4445059</Counter> >+ <Counter worker="4">6621304</Counter> >+ <Counter worker="5">4505768</Counter> >+ </AllToOneEvent> >+ <AllToOneEvent activeWorker="7"> >+ <Counter worker="0">2448321</Counter> >+ <Counter worker="1">4384898</Counter> >+ <Counter worker="2">6577307</Counter> >+ <Counter worker="3">4384946</Counter> >+ <Counter worker="4">6577337</Counter> >+ <Counter worker="5">4384911</Counter> >+ <Counter worker="6">6577325</Counter> >+ </AllToOneEvent> >+ <AllToOneEvent activeWorker="8"> >+ <Counter worker="0">2463815</Counter> >+ <Counter worker="1">4384322</Counter> >+ <Counter worker="2">6565540</Counter> >+ <Counter worker="3">4418699</Counter> >+ <Counter worker="4">6570694</Counter> >+ <Counter worker="5">4396540</Counter> >+ <Counter worker="6">6567240</Counter> >+ <Counter worker="7">4514109</Counter> >+ </AllToOneEvent> >+ <AllToOneEvent activeWorker="9"> >+ <Counter worker="0">2454656</Counter> >+ <Counte
--joel _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel