summaryrefslogtreecommitdiffstats
path: root/testsuites/sptests
diff options
context:
space:
mode:
Diffstat (limited to 'testsuites/sptests')
-rw-r--r--testsuites/sptests/sp01/init.c3
-rw-r--r--testsuites/sptests/sp01/system.h7
-rw-r--r--testsuites/sptests/sp07/system.h2
-rw-r--r--testsuites/sptests/sp2038/init.c2
-rw-r--r--testsuites/sptests/sp2038/sp2038.doc2
-rw-r--r--testsuites/sptests/sp21/sp21.scn3
-rw-r--r--testsuites/sptests/sp31/task1.c2
-rw-r--r--testsuites/sptests/sp37/init.c18
-rw-r--r--testsuites/sptests/sp40/init.c2
-rw-r--r--testsuites/sptests/sp54/init.c48
-rw-r--r--testsuites/sptests/sp68/init.c4
-rw-r--r--testsuites/sptests/sp68/sp68.doc2
-rw-r--r--testsuites/sptests/spatomic01/init.c2
-rw-r--r--testsuites/sptests/spcache01/init.c2
-rw-r--r--testsuites/sptests/spclock_err01/init.c1
-rw-r--r--testsuites/sptests/spclock_err02/init.c1
-rw-r--r--testsuites/sptests/spconfig01/init.c2
-rw-r--r--testsuites/sptests/spconfig02/init.c2
-rw-r--r--testsuites/sptests/spconsole01/init.c2
-rw-r--r--testsuites/sptests/spcontext01/init.c2
-rw-r--r--testsuites/sptests/spcpucounter01/init.c2
-rw-r--r--testsuites/sptests/spcpuset01/test.c10
-rw-r--r--testsuites/sptests/spcxx01/init.cc2
-rw-r--r--testsuites/sptests/speventsystem01/init.c2
-rw-r--r--testsuites/sptests/speventtransient01/init.c2
-rw-r--r--testsuites/sptests/spextensions01/init.c15
-rw-r--r--testsuites/sptests/spfatal26/init.c2
-rw-r--r--testsuites/sptests/spfatal28/init.c2
-rw-r--r--testsuites/sptests/spfatal29/init.c2
-rw-r--r--testsuites/sptests/spfatal30/init.c2
-rw-r--r--testsuites/sptests/spfatal31/init.c2
-rw-r--r--testsuites/sptests/spfatal32/init.c7
-rw-r--r--testsuites/sptests/spfatal33/init.c2
-rw-r--r--testsuites/sptests/spfatal34/init.c2
-rw-r--r--testsuites/sptests/spfatal36/init.c63
-rw-r--r--testsuites/sptests/spfatal36/spfatal36.doc11
-rw-r--r--testsuites/sptests/spglobalcon01/init.cc27
-rw-r--r--testsuites/sptests/spglobalcon02/init.c2
-rw-r--r--testsuites/sptests/spheapprot/init.c2
-rw-r--r--testsuites/sptests/spheapprot/spheapprot.doc25
-rw-r--r--testsuites/sptests/spinternalerror01/init.c2
-rw-r--r--testsuites/sptests/spinternalerror02/init.c4
-rw-r--r--testsuites/sptests/spintrcritical01/spintrcritical01impl.h2
-rw-r--r--testsuites/sptests/spintrcritical08/init.c2
-rw-r--r--testsuites/sptests/spintrcritical09/init.c2
-rw-r--r--testsuites/sptests/spintrcritical10/init.c2
-rw-r--r--testsuites/sptests/spintrcritical11/spintrcritical11impl.h2
-rw-r--r--testsuites/sptests/spintrcritical13/spintrcritical13impl.h2
-rw-r--r--testsuites/sptests/spintrcritical15/init.c2
-rw-r--r--testsuites/sptests/spintrcritical16/init.c2
-rw-r--r--testsuites/sptests/spintrcritical18/init.c2
-rw-r--r--testsuites/sptests/spintrcritical20/init.c2
-rw-r--r--testsuites/sptests/spintrcritical21/init.c2
-rw-r--r--testsuites/sptests/spintrcritical22/init.c2
-rw-r--r--testsuites/sptests/spintrcritical23/init.c2
-rw-r--r--testsuites/sptests/spintrcritical24/init.c2
-rw-r--r--testsuites/sptests/splinkersets01/content.c2
-rw-r--r--testsuites/sptests/splinkersets01/init.c2
-rw-r--r--testsuites/sptests/splinkersets01/item-a.c2
-rw-r--r--testsuites/sptests/splinkersets01/item-ca.c2
-rw-r--r--testsuites/sptests/splinkersets01/sets.c2
-rw-r--r--testsuites/sptests/splinkersets01/splinkersets01.h2
-rw-r--r--testsuites/sptests/spmisc01/init.c13
-rw-r--r--testsuites/sptests/spmisc01/spmisc01.h2
-rw-r--r--testsuites/sptests/spmisc01/strong.c2
-rw-r--r--testsuites/sptests/spmkdir/init.c2
-rw-r--r--testsuites/sptests/spmrsp01/init.c2
-rw-r--r--testsuites/sptests/spmutex01/init.c2
-rw-r--r--testsuites/sptests/spnsext01/init.c2
-rw-r--r--testsuites/sptests/spnsext01/spnsext01.doc2
-rw-r--r--testsuites/sptests/spntp01/init.c2
-rw-r--r--testsuites/sptests/sppercpudata01/init.c2
-rw-r--r--testsuites/sptests/sppercpudata01/item.c2
-rw-r--r--testsuites/sptests/sppercpudata01/sppercpudata01.h2
-rw-r--r--testsuites/sptests/sppps01/init.c55
-rw-r--r--testsuites/sptests/spprintk/init.c25
-rw-r--r--testsuites/sptests/spprofiling01/init.c2
-rw-r--r--testsuites/sptests/spscheduler01/init.c2
-rw-r--r--testsuites/sptests/spsem03/init.c2
-rw-r--r--testsuites/sptests/spstdc17/init.c57
-rw-r--r--testsuites/sptests/spstdc17/spstdc17.doc12
-rw-r--r--testsuites/sptests/spstdthreads01/init.c2
-rw-r--r--testsuites/sptests/spstkalloc02/init.c22
-rw-r--r--testsuites/sptests/spstkalloc02/spstkalloc02.doc4
-rw-r--r--testsuites/sptests/spstkalloc03/init.c4
-rw-r--r--testsuites/sptests/spstkalloc04/init.c4
-rw-r--r--testsuites/sptests/spsysinit01/init.c8
-rw-r--r--testsuites/sptests/spsyslock01/init.c2
-rw-r--r--testsuites/sptests/sptasknopreempt01/init.c18
-rw-r--r--testsuites/sptests/spthread01/init.c2
-rw-r--r--testsuites/sptests/spthreadlife01/init.c2
-rw-r--r--testsuites/sptests/spthreadq01/init.c2
-rw-r--r--testsuites/sptests/sptimecounter01/init.c2
-rw-r--r--testsuites/sptests/sptimecounter01/sptimecounter01.doc2
-rw-r--r--testsuites/sptests/sptimecounter02/init.c78
-rwxr-xr-xtestsuites/sptests/sptimecounter02/sptimecounter02.py91
-rw-r--r--testsuites/sptests/sptimecounter02/sptimecounter02.scn1036
-rw-r--r--testsuites/sptests/sptimecounter03/init.c4
-rw-r--r--testsuites/sptests/sptimecounter04/init.c2
-rw-r--r--testsuites/sptests/sptimerserver01/init.c2
-rw-r--r--testsuites/sptests/sptls01/init.c94
-rw-r--r--testsuites/sptests/sptls02/init.cc20
-rw-r--r--testsuites/sptests/sptls02/sptls02.h2
-rw-r--r--testsuites/sptests/sptls02/var.cc2
-rw-r--r--testsuites/sptests/sptls03/init.c13
-rw-r--r--testsuites/sptests/sptls04/init.c11
-rw-r--r--testsuites/sptests/sptls04/sptls04.h41
-rw-r--r--testsuites/sptests/sptls04/tls.c34
-rw-r--r--testsuites/sptests/spunlimited01/init.c125
-rw-r--r--testsuites/sptests/spunlimited01/spunlimited01.doc14
110 files changed, 952 insertions, 1220 deletions
diff --git a/testsuites/sptests/sp01/init.c b/testsuites/sptests/sp01/init.c
index 2384430824..26d715b0ba 100644
--- a/testsuites/sptests/sp01/init.c
+++ b/testsuites/sptests/sp01/init.c
@@ -35,7 +35,8 @@
const char rtems_test_name[] = "SP 1";
-RTEMS_ALIGNED( RTEMS_TASK_STORAGE_ALIGNMENT ) static char Task_1_storage[
+static RTEMS_NOINIT RTEMS_ALIGNED( RTEMS_TASK_STORAGE_ALIGNMENT ) char
+Task_1_storage[
RTEMS_TASK_STORAGE_SIZE( 2 * RTEMS_MINIMUM_STACK_SIZE, RTEMS_FLOATING_POINT )
];
diff --git a/testsuites/sptests/sp01/system.h b/testsuites/sptests/sp01/system.h
index 46fa76f1e4..782fd929a7 100644
--- a/testsuites/sptests/sp01/system.h
+++ b/testsuites/sptests/sp01/system.h
@@ -48,6 +48,13 @@ rtems_task Task_1_through_3(
*/
#define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
+/*
+ * This test requires full control over the present thread-local objects. In
+ * certain Newlib configurations, the Newlib reentrancy support may add
+ * thread-local objects.
+ */
+#define CONFIGURE_DISABLE_NEWLIB_REENTRANCY
+
#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/testsuites/sptests/sp07/system.h b/testsuites/sptests/sp07/system.h
index cc5f4eb6e7..bcd7b50d1c 100644
--- a/testsuites/sptests/sp07/system.h
+++ b/testsuites/sptests/sp07/system.h
@@ -111,7 +111,7 @@ TEST_EXTERN int Task_restarted[ RTEMS_ARRAY_SIZE( Task_id ) ];
TEST_EXTERN int Task_deleted[ RTEMS_ARRAY_SIZE( Task_id ) ];
-RTEMS_INLINE_ROUTINE void assert_extension_counts( const int *table, int tasks )
+static inline void assert_extension_counts( const int *table, int tasks )
{
size_t i;
diff --git a/testsuites/sptests/sp2038/init.c b/testsuites/sptests/sp2038/init.c
index c280e79b7c..89462beb84 100644
--- a/testsuites/sptests/sp2038/init.c
+++ b/testsuites/sptests/sp2038/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (c) 2011, 2016 embedded brains GmbH. All rights reserved.
+ * Copyright (C) 2011, 2016 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/sp2038/sp2038.doc b/testsuites/sptests/sp2038/sp2038.doc
index 7f5d3ff7ae..056814a58e 100644
--- a/testsuites/sptests/sp2038/sp2038.doc
+++ b/testsuites/sptests/sp2038/sp2038.doc
@@ -1,6 +1,6 @@
# SPDX-License-Identifier: BSD-2-Clause
-# Copyright (c) 2011 embedded brains GmbH. All rights reserved.
+# Copyright (c) 2011 embedded brains GmbH & Co. KG
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/sp21/sp21.scn b/testsuites/sptests/sp21/sp21.scn
index 6c099dfc13..87c798d5bd 100644
--- a/testsuites/sptests/sp21/sp21.scn
+++ b/testsuites/sptests/sp21/sp21.scn
@@ -25,8 +25,5 @@ rtems_io_register_driver - RTEMS_SUCCESSFUL - overwrite NULL
rtems_io_register_driver - RTEMS_TOO_MANY - no slots
rtems_io_register_driver - RTEMS_RESOURCE_IN_USE - major in use
rtems_io_unregister_driver - RTEMS_SUCCESSFUL
-rtems_io_lookup_name( "", &info ) - RTEMS_UNSATISFIED
-rtems_io_lookup_name( "/dev", &info ) - RTEMS_UNSATISFIED
-rtems_io_lookup_name( "/dev/null", &info ) - RTEMS_SUCCESSFUL
----- TESTING THE ZERO DRIVER CHECKS -----
*** END OF TEST 21 ***
diff --git a/testsuites/sptests/sp31/task1.c b/testsuites/sptests/sp31/task1.c
index 3bb56cd99d..09580ee457 100644
--- a/testsuites/sptests/sp31/task1.c
+++ b/testsuites/sptests/sp31/task1.c
@@ -4,7 +4,7 @@
* COPYRIGHT (c) 1989-2011.
* On-Line Applications Research Corporation (OAR).
*
- * Copyright (c) 2009 embedded brains GmbH.
+ * Copyright (c) 2009 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/sp37/init.c b/testsuites/sptests/sp37/init.c
index 2ee21b592e..e8af725a75 100644
--- a/testsuites/sptests/sp37/init.c
+++ b/testsuites/sptests/sp37/init.c
@@ -40,6 +40,8 @@
#define CONFIGURE_INIT
#include "system.h"
+#include <rtems/sysinit.h>
+
const char rtems_test_name[] = "SP 37";
/* prototypes */
@@ -67,6 +69,19 @@ rtems_timer_service_routine test_isr_in_progress(
#define TEST_ISR_EVENT RTEMS_EVENT_0
+static uint32_t boot_isr_level;
+
+static void set_boot_isr_level( void )
+{
+ boot_isr_level = _ISR_Get_level();
+}
+
+RTEMS_SYSINIT_ITEM(
+ set_boot_isr_level,
+ RTEMS_SYSINIT_DEVICE_DRIVERS,
+ RTEMS_SYSINIT_ORDER_MIDDLE
+);
+
typedef struct {
ISR_Level actual_level;
rtems_id master_task_id;
@@ -154,6 +169,9 @@ static void test_isr_level( void )
ISR_Level current = 0;
ISR_Level last_proper_level;
+ /* Interrupts shall be disabled during system initialization */
+ rtems_test_assert( boot_isr_level != 0 );
+
_ISR_Set_level( current );
rtems_test_assert( _ISR_Get_level() == current );
diff --git a/testsuites/sptests/sp40/init.c b/testsuites/sptests/sp40/init.c
index ae7aba0a63..523e074cc6 100644
--- a/testsuites/sptests/sp40/init.c
+++ b/testsuites/sptests/sp40/init.c
@@ -6,7 +6,7 @@
* COPYRIGHT (c) 1989-2012.
* On-Line Applications Research Corporation (OAR).
*
- * Copyright (c) 2009 embedded brains GmbH.
+ * Copyright (c) 2009 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/sp54/init.c b/testsuites/sptests/sp54/init.c
index 712a4ae8db..172eb2b1b0 100644
--- a/testsuites/sptests/sp54/init.c
+++ b/testsuites/sptests/sp54/init.c
@@ -37,6 +37,10 @@
#include "config.h"
#endif
+#include <rtems/sysinit.h>
+#include <rtems/score/memory.h>
+#include <rtems/score/thread.h>
+
#include <tmacros.h>
const char rtems_test_name[] = "SP 54";
@@ -48,12 +52,6 @@ static void *Init( uintptr_t ignored )
rtems_id id;
const rtems_api_configuration_table *config;
- /*
- * It is possible that since this thread prints and there is no idle
- * task, that the system could fail miserably. :(
- */
- TEST_BEGIN();
-
puts( "Init - use valid id of API class with no objects" );
status = rtems_task_set_priority(
rtems_build_id(0x2,0x1,0x01,0x0001) /* 0xa010001 */,
@@ -80,6 +78,44 @@ static void *Init( uintptr_t ignored )
rtems_test_exit(0);
}
+static void check_dirty_memory( void )
+{
+ unsigned char *p;
+
+ TEST_BEGIN();
+
+ p = _Memory_Allocate( _Memory_Get(), sizeof( *p ), RTEMS_ALIGNOF( *p ) );
+ rtems_test_assert( p != NULL );
+ rtems_test_assert( *p == 0xcf );
+
+ p = (unsigned char *) _Thread_Information.Objects.initial_objects;
+ rtems_test_assert( *p == 0xcf );
+}
+
+RTEMS_SYSINIT_ITEM(
+ check_dirty_memory,
+ RTEMS_SYSINIT_DIRTY_MEMORY,
+ RTEMS_SYSINIT_ORDER_LAST
+);
+
+static void check_zero_workspace_automatically( void )
+{
+ unsigned char *p;
+
+ p = _Memory_Allocate( _Memory_Get(), sizeof( *p ), RTEMS_ALIGNOF( *p ) );
+ rtems_test_assert( p != NULL );
+ rtems_test_assert( *p == 0 );
+
+ p = (unsigned char *) _Thread_Information.Objects.initial_objects;
+ rtems_test_assert( *p == 0 );
+}
+
+RTEMS_SYSINIT_ITEM(
+ check_zero_workspace_automatically,
+ RTEMS_SYSINIT_ZERO_MEMORY,
+ RTEMS_SYSINIT_ORDER_LAST
+);
+
/* configuration information */
#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
diff --git a/testsuites/sptests/sp68/init.c b/testsuites/sptests/sp68/init.c
index 5443dfbb5e..6f8d02e945 100644
--- a/testsuites/sptests/sp68/init.c
+++ b/testsuites/sptests/sp68/init.c
@@ -9,7 +9,7 @@
*/
/*
- * Copyright (c) 2009-2015 embedded brains GmbH.
+ * Copyright (C) 2009, 2015 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -166,7 +166,7 @@ static void obtain_callback(rtems_id timer_id, void *arg)
static void release_callback(rtems_id timer_id, void *arg)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
- char buf [1];
+ char buf [1] = { 0 };
size_t size = sizeof(buf);
uint32_t released = 0;
diff --git a/testsuites/sptests/sp68/sp68.doc b/testsuites/sptests/sp68/sp68.doc
index 5402d5d3ea..91e385ef2f 100644
--- a/testsuites/sptests/sp68/sp68.doc
+++ b/testsuites/sptests/sp68/sp68.doc
@@ -1,6 +1,6 @@
# SPDX-License-Identifier: BSD-2-Clause
-# Copyright (c) 2009 embedded brains GmbH.
+# Copyright (c) 2009 embedded brains GmbH & Co. KG
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/spatomic01/init.c b/testsuites/sptests/spatomic01/init.c
index 5c9599205a..58414b042a 100644
--- a/testsuites/sptests/spatomic01/init.c
+++ b/testsuites/sptests/spatomic01/init.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013-2015 embedded brains GmbH. All rights reserved.
+ * Copyright (C) 2013, 2015 embedded brains GmbH & Co. KG
*
* Copyright (c) 2013 Deng Hengyi.
*
diff --git a/testsuites/sptests/spcache01/init.c b/testsuites/sptests/spcache01/init.c
index 4b64a1da75..89fe6794fe 100644
--- a/testsuites/sptests/spcache01/init.c
+++ b/testsuites/sptests/spcache01/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (c) 2014, 2017 embedded brains GmbH. All rights reserved.
+ * Copyright (C) 2014, 2017 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/spclock_err01/init.c b/testsuites/sptests/spclock_err01/init.c
index 889f03e8ae..b6d5f196af 100644
--- a/testsuites/sptests/spclock_err01/init.c
+++ b/testsuites/sptests/spclock_err01/init.c
@@ -226,4 +226,5 @@ rtems_task Init(
print_time( "TA1 - current time - ", &time, "\n" );
TEST_END();
+ rtems_test_exit( 0 );
}
diff --git a/testsuites/sptests/spclock_err02/init.c b/testsuites/sptests/spclock_err02/init.c
index 11061ccc58..91519fbf43 100644
--- a/testsuites/sptests/spclock_err02/init.c
+++ b/testsuites/sptests/spclock_err02/init.c
@@ -136,6 +136,7 @@ rtems_task Init(
print_time( "TA1 - rtems_clock_get_tod - ", &time, " - RTEMS_SUCCESSFUL\n" );
TEST_END();
+ rtems_test_exit( 0 );
}
#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
diff --git a/testsuites/sptests/spconfig01/init.c b/testsuites/sptests/spconfig01/init.c
index 8aa2b26857..90157028a9 100644
--- a/testsuites/sptests/spconfig01/init.c
+++ b/testsuites/sptests/spconfig01/init.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2018 embedded brains GmbH & Co. KG
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
diff --git a/testsuites/sptests/spconfig02/init.c b/testsuites/sptests/spconfig02/init.c
index 91f687c8fb..f25ff5efe7 100644
--- a/testsuites/sptests/spconfig02/init.c
+++ b/testsuites/sptests/spconfig02/init.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2018 embedded brains GmbH & Co. KG
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
diff --git a/testsuites/sptests/spconsole01/init.c b/testsuites/sptests/spconsole01/init.c
index 36ab3c5d38..87924a35dc 100644
--- a/testsuites/sptests/spconsole01/init.c
+++ b/testsuites/sptests/spconsole01/init.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2017 embedded brains GmbH & Co. KG
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
diff --git a/testsuites/sptests/spcontext01/init.c b/testsuites/sptests/spcontext01/init.c
index 5382e035b8..d8d0a2d3aa 100644
--- a/testsuites/sptests/spcontext01/init.c
+++ b/testsuites/sptests/spcontext01/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (c) 2013-2015 embedded brains GmbH. All rights reserved.
+ * Copyright (C) 2013, 2015 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/spcpucounter01/init.c b/testsuites/sptests/spcpucounter01/init.c
index fca5cda6ce..0022806ec6 100644
--- a/testsuites/sptests/spcpucounter01/init.c
+++ b/testsuites/sptests/spcpucounter01/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (c) 2014, 2016 embedded brains GmbH. All rights reserved.
+ * Copyright (C) 2014, 2016 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/spcpuset01/test.c b/testsuites/sptests/spcpuset01/test.c
index b29c117370..d93be69bd3 100644
--- a/testsuites/sptests/spcpuset01/test.c
+++ b/testsuites/sptests/spcpuset01/test.c
@@ -83,9 +83,19 @@ void test_cpu_nand_case_1(size_t cpu1, size_t cpu2)
{
size_t i;
+ /*
+ * FreeBSD renamed CPU_NAND to CPU_ANDNOT. This change was included in
+ * Newlib at some point in time.
+ */
+#ifdef __BIT_ANDNOT2
+ /* ANDNOT set1 and set2 */
+ DPRINT( "Exercise CPU_ANDNOT with bits %zd,%zd\n", cpu1, cpu2 );
+ CPU_ANDNOT(&set3, &set1, &set2);
+#else
/* NAND set1 and set2 */
DPRINT( "Exercise CPU_NAND with bits %zd,%zd\n", cpu1, cpu2 );
CPU_NAND(&set3, &set1, &set2);
+#endif
/* test if all bits clear except cpu1 */
for (i=0 ; i<CPU_SETSIZE ; i++) {
diff --git a/testsuites/sptests/spcxx01/init.cc b/testsuites/sptests/spcxx01/init.cc
index b7be220092..0f1412f292 100644
--- a/testsuites/sptests/spcxx01/init.cc
+++ b/testsuites/sptests/spcxx01/init.cc
@@ -1,7 +1,7 @@
/*
* SPDX-License-Identifier: BSD-2-Clause
*
- * Copyright (C) 2018 embedded brains GmbH
+ * Copyright (C) 2018 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/speventsystem01/init.c b/testsuites/sptests/speventsystem01/init.c
index 5ea56de474..063e161a71 100644
--- a/testsuites/sptests/speventsystem01/init.c
+++ b/testsuites/sptests/speventsystem01/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (c) 2012 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2012 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/speventtransient01/init.c b/testsuites/sptests/speventtransient01/init.c
index 3c4d60098d..c07a77d710 100644
--- a/testsuites/sptests/speventtransient01/init.c
+++ b/testsuites/sptests/speventtransient01/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (c) 2012 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2012 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/spextensions01/init.c b/testsuites/sptests/spextensions01/init.c
index 66e8fac260..59a22293c1 100644
--- a/testsuites/sptests/spextensions01/init.c
+++ b/testsuites/sptests/spextensions01/init.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, 2017 embedded brains GmbH. All rights reserved.
+ * Copyright (C) 2016, 2017 embedded brains GmbH & Co. KG
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
@@ -30,6 +30,11 @@ static int active_extensions = 2;
static rtems_id master_task;
+static bool before_initialization(void)
+{
+ return _System_state_Is_before_initialization(_System_state_Get());
+}
+
static bool before_multitasking(void)
{
return _System_state_Is_before_multitasking(_System_state_Get());
@@ -61,9 +66,13 @@ static void assert_life_protected_thread_context(void)
static void assert_allocator_protected_thread_context(void)
{
- assert(_Thread_Dispatch_is_enabled() || before_multitasking());
+ assert(
+ _Thread_Dispatch_is_enabled() ||
+ before_initialization() ||
+ before_multitasking()
+ );
assert(_RTEMS_Allocator_is_owner());
- assert(life_protected() || before_multitasking());
+ assert(life_protected());
}
static void assert_thread_dispatch_disabled_context(void)
diff --git a/testsuites/sptests/spfatal26/init.c b/testsuites/sptests/spfatal26/init.c
index a23ff7dbce..892d4b941d 100644
--- a/testsuites/sptests/spfatal26/init.c
+++ b/testsuites/sptests/spfatal26/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (c) 2012, 2018 embedded brains GmbH. All rights reserved.
+ * Copyright (C) 2012, 2018 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/spfatal28/init.c b/testsuites/sptests/spfatal28/init.c
index 77ff9a7606..17da04ff7f 100644
--- a/testsuites/sptests/spfatal28/init.c
+++ b/testsuites/sptests/spfatal28/init.c
@@ -7,7 +7,7 @@
#include "../spfatal_support/spfatal.h"
/*
- * Copyright (c) 2014 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2014 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/spfatal29/init.c b/testsuites/sptests/spfatal29/init.c
index 74a06488a7..6da87fdaab 100644
--- a/testsuites/sptests/spfatal29/init.c
+++ b/testsuites/sptests/spfatal29/init.c
@@ -7,7 +7,7 @@
#include "../spfatal_support/spfatal.h"
/*
- * Copyright (c) 2016 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2016 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/spfatal30/init.c b/testsuites/sptests/spfatal30/init.c
index eecfacd4ab..e6656e1694 100644
--- a/testsuites/sptests/spfatal30/init.c
+++ b/testsuites/sptests/spfatal30/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (c) 2017 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2017 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/spfatal31/init.c b/testsuites/sptests/spfatal31/init.c
index 6dfdbbb386..9d93988628 100644
--- a/testsuites/sptests/spfatal31/init.c
+++ b/testsuites/sptests/spfatal31/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (c) 2017 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2017 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/spfatal32/init.c b/testsuites/sptests/spfatal32/init.c
index 78dcfeb669..48979cebd8 100644
--- a/testsuites/sptests/spfatal32/init.c
+++ b/testsuites/sptests/spfatal32/init.c
@@ -7,7 +7,7 @@
#include "../spfatal_support/spfatal.h"
/*
- * Copyright (c) 2018 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2018 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -39,6 +39,11 @@
#define FATAL_ERROR_EXPECTED_SOURCE RTEMS_FATAL_SOURCE_INVALID_HEAP_FREE
#define FATAL_ERROR_EXPECTED_ERROR 1
+/*
+ * Disable for the specific test case.
+ */
+#pragma GCC diagnostic ignored "-Wfree-nonheap-object"
+
static void force_error(void)
{
uintptr_t invalid = 1;
diff --git a/testsuites/sptests/spfatal33/init.c b/testsuites/sptests/spfatal33/init.c
index a7218c596f..f60e3d38d9 100644
--- a/testsuites/sptests/spfatal33/init.c
+++ b/testsuites/sptests/spfatal33/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+ * Copyright (C) 2020 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/spfatal34/init.c b/testsuites/sptests/spfatal34/init.c
index 5c2ab0e735..608a50fcdb 100644
--- a/testsuites/sptests/spfatal34/init.c
+++ b/testsuites/sptests/spfatal34/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+ * Copyright (C) 2020 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/spfatal36/init.c b/testsuites/sptests/spfatal36/init.c
new file mode 100644
index 0000000000..b5e0fbdeed
--- /dev/null
+++ b/testsuites/sptests/spfatal36/init.c
@@ -0,0 +1,63 @@
+/* SPDX-License-Identifier: BSD-2-Clause */
+
+/*
+ * Copyright (C) 2022 embedded brains GmbH & Co. KG
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "../spfatal_support/spfatal.h"
+
+#include <rtems/sysinit.h>
+#include <rtems/score/heapimpl.h>
+#include <rtems/score/wkspace.h>
+
+#define FATAL_ERROR_TEST_NAME "36"
+
+#define FATAL_ERROR_DESCRIPTION "failure in idle task storage allocation"
+
+#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE
+
+#define FATAL_ERROR_EXPECTED_ERROR \
+ INTERNAL_ERROR_NO_MEMORY_FOR_IDLE_TASK_STORAGE
+
+static void force_error( void )
+{
+ RTEMS_UNREACHABLE();
+}
+
+static void empty_workspace( void )
+{
+ (void) _Heap_Greedy_allocate( &_Workspace_Area, NULL, 0 );
+}
+
+RTEMS_SYSINIT_ITEM(
+ empty_workspace,
+ RTEMS_SYSINIT_IDLE_THREADS,
+ RTEMS_SYSINIT_ORDER_FIRST
+);
+
+#include "../spfatal_support/spfatalimpl.h"
diff --git a/testsuites/sptests/spfatal36/spfatal36.doc b/testsuites/sptests/spfatal36/spfatal36.doc
new file mode 100644
index 0000000000..0719e8e01c
--- /dev/null
+++ b/testsuites/sptests/spfatal36/spfatal36.doc
@@ -0,0 +1,11 @@
+This file describes the concepts tested by this test set.
+
+test set name: spfatal36
+
+directives:
+
+ - _Stack_Allocator_allocate_for_idle_workspace()
+
+concepts:
+
+ - Provoke a memory allocation failure in the directive.
diff --git a/testsuites/sptests/spglobalcon01/init.cc b/testsuites/sptests/spglobalcon01/init.cc
index 54f2774170..e81ae9b88b 100644
--- a/testsuites/sptests/spglobalcon01/init.cc
+++ b/testsuites/sptests/spglobalcon01/init.cc
@@ -1,9 +1,28 @@
+/* SPDX-License-Identifier: BSD-2-Clause */
+
/*
- * Copyright (c) 2014 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2014 embedded brains GmbH & Co. KG
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
*
- * 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.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
*/
#ifdef HAVE_CONFIG_H
diff --git a/testsuites/sptests/spglobalcon02/init.c b/testsuites/sptests/spglobalcon02/init.c
index 62d719cea3..bf7bcc080b 100644
--- a/testsuites/sptests/spglobalcon02/init.c
+++ b/testsuites/sptests/spglobalcon02/init.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2018 embedded brains GmbH & Co. KG
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
diff --git a/testsuites/sptests/spheapprot/init.c b/testsuites/sptests/spheapprot/init.c
index e448b91590..8cda04ba95 100644
--- a/testsuites/sptests/spheapprot/init.c
+++ b/testsuites/sptests/spheapprot/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (c) 2010 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2010 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/spheapprot/spheapprot.doc b/testsuites/sptests/spheapprot/spheapprot.doc
index 9d01a7b005..24660789ca 100644
--- a/testsuites/sptests/spheapprot/spheapprot.doc
+++ b/testsuites/sptests/spheapprot/spheapprot.doc
@@ -1,10 +1,27 @@
# SPDX-License-Identifier: BSD-2-Clause
-# Copyright (c) 2010 embedded brains GmbH. All rights reserved.
+# Copyright (c) 2010 embedded brains GmbH & Co. KG
#
-# 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.
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
This file describes the directives and concepts tested by this test set.
diff --git a/testsuites/sptests/spinternalerror01/init.c b/testsuites/sptests/spinternalerror01/init.c
index 092443fbf2..78d59b832d 100644
--- a/testsuites/sptests/spinternalerror01/init.c
+++ b/testsuites/sptests/spinternalerror01/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (c) 2012 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2012 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/spinternalerror02/init.c b/testsuites/sptests/spinternalerror02/init.c
index 08aeabd3a7..961321cb23 100644
--- a/testsuites/sptests/spinternalerror02/init.c
+++ b/testsuites/sptests/spinternalerror02/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (c) 2012, 2020 embedded brains GmbH. All rights reserved.
+ * Copyright (C) 2012, 2020 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -49,7 +49,7 @@ static void test_internal_error_text(void)
} while ( text != text_last );
rtems_test_assert(
- error - 3 == INTERNAL_ERROR_RTEMS_INIT_TASK_CONSTRUCT_FAILED
+ error - 3 == INTERNAL_ERROR_IDLE_THREAD_STACK_TOO_SMALL
);
}
diff --git a/testsuites/sptests/spintrcritical01/spintrcritical01impl.h b/testsuites/sptests/spintrcritical01/spintrcritical01impl.h
index f963204647..8f18e08d0c 100644
--- a/testsuites/sptests/spintrcritical01/spintrcritical01impl.h
+++ b/testsuites/sptests/spintrcritical01/spintrcritical01impl.h
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+ * Copyright (C) 2020 embedded brains GmbH & Co. KG
*
* COPYRIGHT (c) 1989-2012.
* On-Line Applications Research Corporation (OAR).
diff --git a/testsuites/sptests/spintrcritical08/init.c b/testsuites/sptests/spintrcritical08/init.c
index fe9d696d01..d8cf13740b 100644
--- a/testsuites/sptests/spintrcritical08/init.c
+++ b/testsuites/sptests/spintrcritical08/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+ * Copyright (C) 2020 embedded brains GmbH & Co. KG
*
* COPYRIGHT (c) 1989-2012.
* On-Line Applications Research Corporation (OAR).
diff --git a/testsuites/sptests/spintrcritical09/init.c b/testsuites/sptests/spintrcritical09/init.c
index 206d336ecb..f63d19ac63 100644
--- a/testsuites/sptests/spintrcritical09/init.c
+++ b/testsuites/sptests/spintrcritical09/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+ * Copyright (C) 2020 embedded brains GmbH & Co. KG
*
* COPYRIGHT (c) 1989-2012.
* On-Line Applications Research Corporation (OAR).
diff --git a/testsuites/sptests/spintrcritical10/init.c b/testsuites/sptests/spintrcritical10/init.c
index b0f8f23075..d69af9cabd 100644
--- a/testsuites/sptests/spintrcritical10/init.c
+++ b/testsuites/sptests/spintrcritical10/init.c
@@ -4,7 +4,7 @@
* COPYRIGHT (c) 1989-2012.
* On-Line Applications Research Corporation (OAR).
*
- * Copyright (c) 2013, 2020 embedded brains GmbH.
+ * Copyright (C) 2013, 2020 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/spintrcritical11/spintrcritical11impl.h b/testsuites/sptests/spintrcritical11/spintrcritical11impl.h
index e3a029f086..73f0dd66ba 100644
--- a/testsuites/sptests/spintrcritical11/spintrcritical11impl.h
+++ b/testsuites/sptests/spintrcritical11/spintrcritical11impl.h
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+ * Copyright (C) 2020 embedded brains GmbH & Co. KG
*
* COPYRIGHT (c) 1989-2012.
* On-Line Applications Research Corporation (OAR).
diff --git a/testsuites/sptests/spintrcritical13/spintrcritical13impl.h b/testsuites/sptests/spintrcritical13/spintrcritical13impl.h
index 7d95551526..3b7604ac92 100644
--- a/testsuites/sptests/spintrcritical13/spintrcritical13impl.h
+++ b/testsuites/sptests/spintrcritical13/spintrcritical13impl.h
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+ * Copyright (C) 2020 embedded brains GmbH & Co. KG
*
* COPYRIGHT (c) 1989-2009.
* On-Line Applications Research Corporation (OAR).
diff --git a/testsuites/sptests/spintrcritical15/init.c b/testsuites/sptests/spintrcritical15/init.c
index 46c0805580..3295b6214b 100644
--- a/testsuites/sptests/spintrcritical15/init.c
+++ b/testsuites/sptests/spintrcritical15/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+ * Copyright (C) 2020 embedded brains GmbH & Co. KG
*
* COPYRIGHT (c) 1989-2009.
* On-Line Applications Research Corporation (OAR).
diff --git a/testsuites/sptests/spintrcritical16/init.c b/testsuites/sptests/spintrcritical16/init.c
index 80763391ea..612f92f4e1 100644
--- a/testsuites/sptests/spintrcritical16/init.c
+++ b/testsuites/sptests/spintrcritical16/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+ * Copyright (C) 2020 embedded brains GmbH & Co. KG
*
* COPYRIGHT (c) 1989-2009.
* On-Line Applications Research Corporation (OAR).
diff --git a/testsuites/sptests/spintrcritical18/init.c b/testsuites/sptests/spintrcritical18/init.c
index 0a8aadda35..61ff82df55 100644
--- a/testsuites/sptests/spintrcritical18/init.c
+++ b/testsuites/sptests/spintrcritical18/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (C) 2012, 2020 embedded brains GmbH (http://www.embedded-brains.de)
+ * Copyright (C) 2012, 2020 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/spintrcritical20/init.c b/testsuites/sptests/spintrcritical20/init.c
index 81fc8cb34f..c1521c8969 100644
--- a/testsuites/sptests/spintrcritical20/init.c
+++ b/testsuites/sptests/spintrcritical20/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (C) 2013, 2020 embedded brains GmbH (http://www.embedded-brains.de)
+ * Copyright (C) 2013, 2020 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/spintrcritical21/init.c b/testsuites/sptests/spintrcritical21/init.c
index 14b4d3f0d9..6c675e1669 100644
--- a/testsuites/sptests/spintrcritical21/init.c
+++ b/testsuites/sptests/spintrcritical21/init.c
@@ -3,7 +3,7 @@
/*
* Classic API Signal to Task from ISR
*
- * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+ * Copyright (C) 2020 embedded brains GmbH & Co. KG
*
* COPYRIGHT (c) 1989-2011.
* On-Line Applications Research Corporation (OAR).
diff --git a/testsuites/sptests/spintrcritical22/init.c b/testsuites/sptests/spintrcritical22/init.c
index d38bbbf0b2..73c9c6226c 100644
--- a/testsuites/sptests/spintrcritical22/init.c
+++ b/testsuites/sptests/spintrcritical22/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (C) 2014, 2020 embedded brains GmbH (http://www.embedded-brains.de)
+ * Copyright (C) 2014, 2020 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/spintrcritical23/init.c b/testsuites/sptests/spintrcritical23/init.c
index 1d52b8f9a1..ebc50fdb2d 100644
--- a/testsuites/sptests/spintrcritical23/init.c
+++ b/testsuites/sptests/spintrcritical23/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (C) 2015, 2020 embedded brains GmbH (http://www.embedded-brains.de)
+ * Copyright (C) 2015, 2020 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/spintrcritical24/init.c b/testsuites/sptests/spintrcritical24/init.c
index 7392ee04e2..6f686b1564 100644
--- a/testsuites/sptests/spintrcritical24/init.c
+++ b/testsuites/sptests/spintrcritical24/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (C) 2017, 2020 embedded brains GmbH (http://www.embedded-brains.de)
+ * Copyright (C) 2017, 2020 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/splinkersets01/content.c b/testsuites/sptests/splinkersets01/content.c
index 2179342a50..5dedcb9060 100644
--- a/testsuites/sptests/splinkersets01/content.c
+++ b/testsuites/sptests/splinkersets01/content.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2016 embedded brains GmbH. All rights reserved.
+ * Copyright (C) 2015, 2016 embedded brains GmbH & Co. KG
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
diff --git a/testsuites/sptests/splinkersets01/init.c b/testsuites/sptests/splinkersets01/init.c
index 87d9558a87..059b4e230c 100644
--- a/testsuites/sptests/splinkersets01/init.c
+++ b/testsuites/sptests/splinkersets01/init.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2016 embedded brains GmbH. All rights reserved.
+ * Copyright (C) 2015, 2016 embedded brains GmbH & Co. KG
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
diff --git a/testsuites/sptests/splinkersets01/item-a.c b/testsuites/sptests/splinkersets01/item-a.c
index d0f615a97d..305c952d83 100644
--- a/testsuites/sptests/splinkersets01/item-a.c
+++ b/testsuites/sptests/splinkersets01/item-a.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2016 embedded brains GmbH. All rights reserved.
+ * Copyright (C) 2015, 2016 embedded brains GmbH & Co. KG
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
diff --git a/testsuites/sptests/splinkersets01/item-ca.c b/testsuites/sptests/splinkersets01/item-ca.c
index 9e09f68b33..e85c0c0855 100644
--- a/testsuites/sptests/splinkersets01/item-ca.c
+++ b/testsuites/sptests/splinkersets01/item-ca.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2016 embedded brains GmbH. All rights reserved.
+ * Copyright (C) 2015, 2016 embedded brains GmbH & Co. KG
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
diff --git a/testsuites/sptests/splinkersets01/sets.c b/testsuites/sptests/splinkersets01/sets.c
index f7e1d222d4..a7b930dbf5 100644
--- a/testsuites/sptests/splinkersets01/sets.c
+++ b/testsuites/sptests/splinkersets01/sets.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2015 embedded brains GmbH & Co. KG
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
diff --git a/testsuites/sptests/splinkersets01/splinkersets01.h b/testsuites/sptests/splinkersets01/splinkersets01.h
index 82d1b188e0..0581204765 100644
--- a/testsuites/sptests/splinkersets01/splinkersets01.h
+++ b/testsuites/sptests/splinkersets01/splinkersets01.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2016 embedded brains GmbH. All rights reserved.
+ * Copyright (C) 2015, 2016 embedded brains GmbH & Co. KG
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
diff --git a/testsuites/sptests/spmisc01/init.c b/testsuites/sptests/spmisc01/init.c
index d7658fc9b7..8c46245af9 100644
--- a/testsuites/sptests/spmisc01/init.c
+++ b/testsuites/sptests/spmisc01/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (C) 2018, 2019 embedded brains GmbH
+ * Copyright (C) 2018, 2019 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -122,9 +122,14 @@ static int obfuscate_variable(int i)
return i;
}
+static int global_symbol_base;
+
RTEMS_DECLARE_GLOBAL_SYMBOL(a_global_symbol);
-RTEMS_DEFINE_GLOBAL_SYMBOL(a_global_symbol, 0xabc);
+RTEMS_DEFINE_GLOBAL_SYMBOL(
+ a_global_symbol,
+ RTEMS_SYMBOL_NAME(global_symbol_base) + 0xabc
+);
RTEMS_STATIC_ASSERT(0 != 1, zero_neq_one);
@@ -243,7 +248,9 @@ static void Init(rtems_task_argument arg)
unreachable();
rtems_test_assert(printflike_func("%i", 0) == 56);
rtems_test_assert(obfuscate_variable(63) == 63);
- rtems_test_assert((uintptr_t)a_global_symbol == 0xabc);
+ rtems_test_assert(
+ (uintptr_t) a_global_symbol - (uintptr_t) &global_symbol_base == 0xabc
+ );
rtems_test_assert(RTEMS_ARRAY_SIZE(array) == 3);
rtems_test_assert(sizeof(zero_length_array_struct) == 4);
container_of();
diff --git a/testsuites/sptests/spmisc01/spmisc01.h b/testsuites/sptests/spmisc01/spmisc01.h
index 6dbf9ca23c..ee04e36cde 100644
--- a/testsuites/sptests/spmisc01/spmisc01.h
+++ b/testsuites/sptests/spmisc01/spmisc01.h
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+ * Copyright (C) 2020 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/spmisc01/strong.c b/testsuites/sptests/spmisc01/strong.c
index 6a3d9c8561..d330e5ed44 100644
--- a/testsuites/sptests/spmisc01/strong.c
+++ b/testsuites/sptests/spmisc01/strong.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+ * Copyright (C) 2020 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/spmkdir/init.c b/testsuites/sptests/spmkdir/init.c
index dd9b3aab7d..7eea58d86d 100644
--- a/testsuites/sptests/spmkdir/init.c
+++ b/testsuites/sptests/spmkdir/init.c
@@ -9,7 +9,7 @@
*/
/*
- * Copyright (c) 2010 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2010 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/spmrsp01/init.c b/testsuites/sptests/spmrsp01/init.c
index 40111dc806..a5c130e1c2 100644
--- a/testsuites/sptests/spmrsp01/init.c
+++ b/testsuites/sptests/spmrsp01/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (c) 2014 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2014 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/spmutex01/init.c b/testsuites/sptests/spmutex01/init.c
index f6e3a987f2..12590317c5 100644
--- a/testsuites/sptests/spmutex01/init.c
+++ b/testsuites/sptests/spmutex01/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (c) 2015, 2017 embedded brains GmbH. All rights reserved.
+ * Copyright (C) 2015, 2017 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/spnsext01/init.c b/testsuites/sptests/spnsext01/init.c
index a786574032..b45da45a49 100644
--- a/testsuites/sptests/spnsext01/init.c
+++ b/testsuites/sptests/spnsext01/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (c) 2011 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2011 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/spnsext01/spnsext01.doc b/testsuites/sptests/spnsext01/spnsext01.doc
index 7e926c6899..27c9f0c32e 100644
--- a/testsuites/sptests/spnsext01/spnsext01.doc
+++ b/testsuites/sptests/spnsext01/spnsext01.doc
@@ -1,6 +1,6 @@
# SPDX-License-Identifier: BSD-2-Clause
-# Copyright (c) 2011 embedded brains GmbH. All rights reserved.
+# Copyright (c) 2011 embedded brains GmbH & Co. KG
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/spntp01/init.c b/testsuites/sptests/spntp01/init.c
index eb5b1ca56c..f6f6252bcf 100644
--- a/testsuites/sptests/spntp01/init.c
+++ b/testsuites/sptests/spntp01/init.c
@@ -1,7 +1,7 @@
/*
* SPDX-License-Identifier: BSD-2-Clause
*
- * Copyright (C) 2022 embedded brains GmbH (http://www.embedded-brains.de)
+ * Copyright (C) 2022 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/sppercpudata01/init.c b/testsuites/sptests/sppercpudata01/init.c
index d76ba94d28..24ad75b607 100644
--- a/testsuites/sptests/sppercpudata01/init.c
+++ b/testsuites/sptests/sppercpudata01/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (c) 2018 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2018 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/sppercpudata01/item.c b/testsuites/sptests/sppercpudata01/item.c
index 4a6ee46c8b..295e2855ee 100644
--- a/testsuites/sptests/sppercpudata01/item.c
+++ b/testsuites/sptests/sppercpudata01/item.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (c) 2018 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2018 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/sppercpudata01/sppercpudata01.h b/testsuites/sptests/sppercpudata01/sppercpudata01.h
index 1dde0071c8..2913d3456f 100644
--- a/testsuites/sptests/sppercpudata01/sppercpudata01.h
+++ b/testsuites/sptests/sppercpudata01/sppercpudata01.h
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (c) 2018 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2018 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/sppps01/init.c b/testsuites/sptests/sppps01/init.c
index 850c21f1f2..8dcce17769 100644
--- a/testsuites/sptests/sppps01/init.c
+++ b/testsuites/sptests/sppps01/init.c
@@ -46,6 +46,7 @@ const char rtems_test_name[] = "SPPPS 1";
struct test_pps_device {
struct pps_state pps;
rtems_id task_waiting;
+ int wokenup;
};
typedef struct {
@@ -59,17 +60,65 @@ T_TEST_CASE( WaitPPSEventDefaultHandler )
struct test_pps_device pps_dev;
struct pps_fetch_args fetch;
+ memset( &pps_dev, 0, sizeof( pps_dev ) );
pps_dev.task_waiting = RTEMS_INVALID_ID;
- memset( &pps_dev.pps, 0, sizeof( pps_dev.pps ) );
pps_dev.pps.ppscap = PPS_CAPTUREBOTH;
pps_init_abi( &pps_dev.pps );
pps_dev.pps.ppsparam.mode = PPS_CAPTUREASSERT;
+ /* If no timeout is requested, pps_fetch() doesn't call the default handler */
+ memset( &fetch, 0, sizeof( fetch ) );
+ status = pps_ioctl( PPS_IOC_FETCH, (caddr_t)&fetch, &pps_dev.pps );
+ T_eq_int( status, 0 );
+
+ fetch.timeout.tv_sec = 1;
status = pps_ioctl( PPS_IOC_FETCH, (caddr_t)&fetch, &pps_dev.pps );
T_eq_int( status, ETIMEDOUT );
}
+static void fake_wakeup(struct pps_state *pps)
+{
+ struct test_pps_device *pps_dev;
+
+ pps_dev = RTEMS_CONTAINER_OF( pps, struct test_pps_device, pps );
+ pps_dev->wokenup++;
+}
+
+T_TEST_CASE( PPSEventEarlyReturns )
+{
+ struct test_pps_device pps_dev;
+
+ memset( &pps_dev, 0, sizeof( pps_dev ) );
+ pps_dev.task_waiting = RTEMS_INVALID_ID;
+
+ pps_dev.pps.ppscap = PPS_CAPTUREBOTH;
+ pps_init_abi( &pps_dev.pps );
+ pps_dev.pps.wakeup = fake_wakeup;
+ pps_dev.pps.ppsparam.mode = PPS_CAPTUREASSERT;
+
+ pps_capture( &pps_dev.pps );
+ /* Trigger event with a different event than the one previously selected */
+ pps_event( &pps_dev.pps, PPS_CAPTURECLEAR );
+ T_eq_int( pps_dev.wokenup, 0 );
+
+ pps_dev.pps.ppsparam.mode = PPS_CAPTURECLEAR;
+
+ /* Wait th_generation to be updated */
+ rtems_task_wake_after( 2 );
+ pps_event( &pps_dev.pps, PPS_CAPTURECLEAR );
+ T_eq_int( pps_dev.wokenup, 0 );
+
+ /* Save current timecounter in pps_state object */
+ pps_capture( &pps_dev.pps );
+ pps_event( &pps_dev.pps, PPS_CAPTURECLEAR );
+ T_eq_int( pps_dev.wokenup, 0 );
+
+ pps_capture( &pps_dev.pps );
+ pps_event( &pps_dev.pps, PPS_CAPTURECLEAR );
+ T_eq_int( pps_dev.wokenup, 1 );
+}
+
static void wakeup(struct pps_state *pps)
{
struct test_pps_device *pps_dev;
@@ -114,7 +163,7 @@ static void pps_task(rtems_task_argument arg)
sc = rtems_event_send( ctx->main_task, PPS_EVENT_RECEIVED );
T_rsc_success( sc );
- rtems_task_delete(rtems_task_self());
+ rtems_task_exit();
}
T_TEST_CASE( WakeupTaskWithPPSEvent )
@@ -128,11 +177,11 @@ T_TEST_CASE( WakeupTaskWithPPSEvent )
rtems_task_priority pps_task_prio = 1;
rtems_event_set out;
+ memset( &pps_dev, 0, sizeof( pps_dev ) );
pps_dev.task_waiting = RTEMS_INVALID_ID;
ctx.pps_dev = &pps_dev;
ctx.main_task = rtems_task_self();
- memset( &pps_dev.pps, 0, sizeof( pps_dev.pps ) );
pps_dev.pps.ppscap = PPS_CAPTUREBOTH;
pps_init_abi( &pps_dev.pps );
pps_dev.pps.wait = wait;
diff --git a/testsuites/sptests/spprintk/init.c b/testsuites/sptests/spprintk/init.c
index f8fe224086..4fc1c0cc97 100644
--- a/testsuites/sptests/spprintk/init.c
+++ b/testsuites/sptests/spprintk/init.c
@@ -32,7 +32,8 @@
#include "config.h"
#endif
-#include <rtems/score/io.h>
+#include <rtems/base64.h>
+#include <rtems/dev/io.h>
/*
* Undefined the RTEMS_PRINTFLIKE and make it nothing. The test code
@@ -212,52 +213,52 @@ static void test_io_base64( test_context *ctx )
int n;
clear( ctx );
- n = _IO_Base64( put_char, ctx, buf, 9, "\n", 0 );
+ n = _Base64_Encode( put_char, ctx, buf, 9, "\n", 0 );
rtems_test_assert( n == 14 );
rtems_test_assert( strcmp( ctx->buf, "YWJj\nZGVm\nZ2hp" ) == 0 );
clear( ctx );
- n = _IO_Base64( put_char, ctx, buf, 8, "\n", 4 );
+ n = _Base64_Encode( put_char, ctx, buf, 8, "\n", 4 );
rtems_test_assert( n == 14 );
rtems_test_assert( strcmp( ctx->buf, "YWJj\nZGVm\nZ2g=" ) == 0 );
clear( ctx );
- n = _IO_Base64( put_char, ctx, buf, 7, "\n", 4 );
+ n = _Base64_Encode( put_char, ctx, buf, 7, "\n", 4 );
rtems_test_assert( n == 14 );
rtems_test_assert( strcmp( ctx->buf, "YWJj\nZGVm\nZw==" ) == 0 );
clear( ctx );
- n = _IO_Base64( put_char, ctx, buf, 6, "\n", 4 );
+ n = _Base64_Encode( put_char, ctx, buf, 6, "\n", 4 );
rtems_test_assert( n == 9 );
rtems_test_assert( strcmp( ctx->buf, "YWJj\nZGVm" ) == 0 );
clear( ctx );
- n = _IO_Base64( put_char, ctx, buf, 5, "\n", 4 );
+ n = _Base64_Encode( put_char, ctx, buf, 5, "\n", 4 );
rtems_test_assert( n == 9 );
rtems_test_assert( strcmp( ctx->buf, "YWJj\nZGU=" ) == 0 );
clear( ctx );
- n = _IO_Base64( put_char, ctx, buf, 4, "\n", 4 );
+ n = _Base64_Encode( put_char, ctx, buf, 4, "\n", 4 );
rtems_test_assert( n == 9 );
rtems_test_assert( strcmp( ctx->buf, "YWJj\nZA==" ) == 0 );
clear( ctx );
- n = _IO_Base64( put_char, ctx, buf, 3, "\n", 4 );
+ n = _Base64_Encode( put_char, ctx, buf, 3, "\n", 4 );
rtems_test_assert( n == 4 );
rtems_test_assert( strcmp( ctx->buf, "YWJj" ) == 0 );
clear( ctx );
- n = _IO_Base64( put_char, ctx, buf, 2, "\n", 4 );
+ n = _Base64_Encode( put_char, ctx, buf, 2, "\n", 4 );
rtems_test_assert( n == 4 );
rtems_test_assert( strcmp( ctx->buf, "YWI=" ) == 0 );
clear( ctx );
- n = _IO_Base64( put_char, ctx, buf, 1, "\n", 4 );
+ n = _Base64_Encode( put_char, ctx, buf, 1, "\n", 4 );
rtems_test_assert( n == 4 );
rtems_test_assert( strcmp( ctx->buf, "YQ==" ) == 0 );
clear( ctx );
- n = _IO_Base64( put_char, ctx, buf, 0, "\n", 4 );
+ n = _Base64_Encode( put_char, ctx, buf, 0, "\n", 4 );
rtems_test_assert( n == 0 );
}
@@ -267,7 +268,7 @@ static void test_io_base64url( test_context *ctx )
int n;
clear( ctx );
- n = _IO_Base64url( put_char, ctx, buf, sizeof( buf ), "\n", 0 );
+ n = _Base64url_Encode( put_char, ctx, buf, sizeof( buf ), "\n", 0 );
rtems_test_assert( n == 9 );
rtems_test_assert( strcmp( ctx->buf, "AAA-\nAAA_" ) == 0 );
}
diff --git a/testsuites/sptests/spprofiling01/init.c b/testsuites/sptests/spprofiling01/init.c
index 8750f18a06..aa8a7b7098 100644
--- a/testsuites/sptests/spprofiling01/init.c
+++ b/testsuites/sptests/spprofiling01/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (c) 2014 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2014 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/spscheduler01/init.c b/testsuites/sptests/spscheduler01/init.c
index 577d294cf6..c2dfc954fc 100644
--- a/testsuites/sptests/spscheduler01/init.c
+++ b/testsuites/sptests/spscheduler01/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (C) 2014, 2020 embedded brains GmbH (http://www.embedded-brains.de)
+ * Copyright (C) 2014, 2020 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/spsem03/init.c b/testsuites/sptests/spsem03/init.c
index aef3f8cf7d..11e6cb6827 100644
--- a/testsuites/sptests/spsem03/init.c
+++ b/testsuites/sptests/spsem03/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (c) 2014, 2016 embedded brains GmbH. All rights reserved.
+ * Copyright (C) 2014, 2016 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/spstdc17/init.c b/testsuites/sptests/spstdc17/init.c
new file mode 100644
index 0000000000..0a1a5571ac
--- /dev/null
+++ b/testsuites/sptests/spstdc17/init.c
@@ -0,0 +1,57 @@
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ *
+ * Copyright (C) 2022
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <rtems.h>
+
+#include <tmacros.h>
+
+const char rtems_test_name[] = "SPSTDC17";
+
+static rtems_task Init( rtems_task_argument arg )
+{
+ (void) arg;
+
+ TEST_BEGIN();
+ TEST_END();
+}
+
+#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
+#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
+
+#define CONFIGURE_MAXIMUM_TASKS 1
+
+#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
+
+#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+#define CONFIGURE_INIT
+
+#include <rtems/confdefs.h>
diff --git a/testsuites/sptests/spstdc17/spstdc17.doc b/testsuites/sptests/spstdc17/spstdc17.doc
new file mode 100644
index 0000000000..7f83fd9ad3
--- /dev/null
+++ b/testsuites/sptests/spstdc17/spstdc17.doc
@@ -0,0 +1,12 @@
+This file describes the directives and concepts tested by this test set.
+
+test set name: spstdc17
+
+directives:
+
+ - Header file <rtems.h>
+ - Header file <rtems/confdefs.h>
+
+concepts:
+
+ - Ensure that the API header files are compatible with the C17 standard.
diff --git a/testsuites/sptests/spstdthreads01/init.c b/testsuites/sptests/spstdthreads01/init.c
index 01dcc8e312..d1cacc1705 100644
--- a/testsuites/sptests/spstdthreads01/init.c
+++ b/testsuites/sptests/spstdthreads01/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (c) 2015 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2015 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/spstkalloc02/init.c b/testsuites/sptests/spstkalloc02/init.c
index 5e5db20f0f..30803bfc8e 100644
--- a/testsuites/sptests/spstkalloc02/init.c
+++ b/testsuites/sptests/spstkalloc02/init.c
@@ -9,7 +9,7 @@
*/
/*
- * Copyright (c) 2011 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2011 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -44,6 +44,7 @@ const char rtems_test_name[] = "SPSTKALLOC 2";
#include <stdio.h>
#include <inttypes.h>
+#include <rtems/malloc.h>
#include <rtems/score/heapimpl.h>
#define TASK_COUNT 5
@@ -56,6 +57,8 @@ static void task_stack_init(size_t stack_space_size);
static void *task_stack_allocate(size_t stack_size);
+static void *task_stack_allocate_for_idle(uint32_t unused, size_t *stack_size);
+
static void task_stack_free(void *addr);
static void print_info(void)
@@ -138,10 +141,18 @@ static rtems_task Init(rtems_task_argument argument)
*/
#define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
+/*
+ * This test requires full control over the present thread-local objects. This
+ * is necessary for the custom stack allocator below. In certain Newlib
+ * configurations, the Newlib reentrancy support may add thread-local objects.
+ */
+#define CONFIGURE_DISABLE_NEWLIB_REENTRANCY
+
#define CONFIGURE_MAXIMUM_TASKS TASK_COUNT
#define CONFIGURE_TASK_STACK_ALLOCATOR_INIT task_stack_init
#define CONFIGURE_TASK_STACK_ALLOCATOR task_stack_allocate
+#define CONFIGURE_TASK_STACK_ALLOCATOR_FOR_IDLE task_stack_allocate_for_idle
#define CONFIGURE_TASK_STACK_DEALLOCATOR task_stack_free
#define CONFIGURE_TASK_STACK_ALLOCATOR_AVOIDS_WORK_SPACE
#define CONFIGURE_TASK_STACK_FROM_ALLOCATOR(stack_size) \
@@ -176,6 +187,15 @@ static void *task_stack_allocate(size_t stack_size)
return _Heap_Allocate(&task_stack_heap, stack_size);
}
+static void *task_stack_allocate_for_idle(uint32_t unused, size_t *stack_size)
+{
+ return rtems_heap_allocate_aligned_with_boundary(
+ *stack_size,
+ CPU_STACK_ALIGNMENT,
+ 0
+ );
+}
+
static void task_stack_free(void *addr)
{
_Heap_Free(&task_stack_heap, addr);
diff --git a/testsuites/sptests/spstkalloc02/spstkalloc02.doc b/testsuites/sptests/spstkalloc02/spstkalloc02.doc
index a2dd0357ba..96cdfb52c2 100644
--- a/testsuites/sptests/spstkalloc02/spstkalloc02.doc
+++ b/testsuites/sptests/spstkalloc02/spstkalloc02.doc
@@ -1,6 +1,6 @@
# SPDX-License-Identifier: BSD-2-Clause
-# Copyright (c) 2011 embedded brains GmbH.
+# Copyright (c) 2011 embedded brains GmbH & Co. KG
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
@@ -26,7 +26,7 @@
This file describes the directives and concepts tested by this test set.
-test set name: spstkalloc01
+test set name: spstkalloc02
The test expects that no thread-local object is present.
diff --git a/testsuites/sptests/spstkalloc03/init.c b/testsuites/sptests/spstkalloc03/init.c
index 6d6817bccb..5ee7de26ec 100644
--- a/testsuites/sptests/spstkalloc03/init.c
+++ b/testsuites/sptests/spstkalloc03/init.c
@@ -87,12 +87,12 @@ static void thread_stacks_free(void *addr)
static void *thread_stacks_allocate_for_idle(
uint32_t cpu,
- size_t stack_size
+ size_t *stack_size
)
{
rtems_test_assert(thread_stacks_count == 0);
thread_stacks_count++;
- return allocate_helper(stack_size);
+ return allocate_helper(*stack_size);
}
/*
diff --git a/testsuites/sptests/spstkalloc04/init.c b/testsuites/sptests/spstkalloc04/init.c
index c5d2614f64..9678f6e00c 100644
--- a/testsuites/sptests/spstkalloc04/init.c
+++ b/testsuites/sptests/spstkalloc04/init.c
@@ -69,12 +69,12 @@ static void *allocate_helper(size_t size)
static void *thread_stacks_allocate_for_idle(
uint32_t cpu,
- size_t stack_size
+ size_t *stack_size
)
{
rtems_test_assert(thread_stacks_count == 0);
thread_stacks_count++;
- return allocate_helper(stack_size);
+ return allocate_helper(*stack_size);
}
/*
diff --git a/testsuites/sptests/spsysinit01/init.c b/testsuites/sptests/spsysinit01/init.c
index 0d5a1f0020..f756dc7a23 100644
--- a/testsuites/sptests/spsysinit01/init.c
+++ b/testsuites/sptests/spsysinit01/init.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2020 embedded brains GmbH. All rights reserved.
+ * Copyright (C) 2015, 2020 embedded brains GmbH & Co. KG
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
@@ -341,13 +341,13 @@ LAST(RTEMS_SYSINIT_CLASSIC_MESSAGE_QUEUE)
FIRST(RTEMS_SYSINIT_CLASSIC_SEMAPHORE)
{
- assert(_Semaphore_Information.initial_objects[0].id == 0);
+ assert(info_not_init(&_Semaphore_Information));
next_step(CLASSIC_SEMAPHORE_PRE);
}
LAST(RTEMS_SYSINIT_CLASSIC_SEMAPHORE)
{
- assert(_Semaphore_Information.initial_objects[0].id != 0);
+ assert(info_is_init(&_Semaphore_Information, 1));
next_step(CLASSIC_SEMAPHORE_POST);
}
@@ -908,7 +908,7 @@ static void do_posix_sem_open(void)
sem_t *sem;
int rv;
- sem = sem_open("sem", O_CREAT | O_RDWR, S_IRWXU | S_IRWXG | S_IRWXO);
+ sem = sem_open("sem", O_CREAT | O_RDWR, S_IRWXU | S_IRWXG | S_IRWXO, 0);
rtems_test_assert(sem != SEM_FAILED);
rv = sem_close(sem);
diff --git a/testsuites/sptests/spsyslock01/init.c b/testsuites/sptests/spsyslock01/init.c
index 01f5ee3fba..74e3d67530 100644
--- a/testsuites/sptests/spsyslock01/init.c
+++ b/testsuites/sptests/spsyslock01/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (c) 2015, 2016 embedded brains GmbH. All rights reserved.
+ * Copyright (C) 2015, 2016 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/sptasknopreempt01/init.c b/testsuites/sptests/sptasknopreempt01/init.c
index 617a44ade1..5828d602de 100644
--- a/testsuites/sptests/sptasknopreempt01/init.c
+++ b/testsuites/sptests/sptasknopreempt01/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (c) 2015 embedded brains GmbH. All rights reserved.
+ * Copyright (C) 2015, 2022 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -37,12 +37,7 @@ static bool did_run;
static void do_not_run(rtems_task_argument arg)
{
-#if 0
rtems_test_assert(0);
-#else
- did_run = true;
- rtems_task_suspend(RTEMS_SELF);
-#endif
}
static void test(void)
@@ -64,9 +59,9 @@ static void test(void)
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
/*
- * This will start a pseudo interrupt task pre-empting the non-preemtive
- * executing task. Later the high priority do_not_run() task is scheduled.
- * See also https://devel.rtems.org/ticket/2365.
+ * This will start a task with a priority of PRIORITY_MINIMUM. Check that
+ * this task and the test task did not preempt the current task. See also
+ * https://devel.rtems.org/ticket/2365.
*/
sc = rtems_timer_initiate_server(
RTEMS_TIMER_SERVER_DEFAULT_PRIORITY,
@@ -75,8 +70,7 @@ static void test(void)
);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
- /* This is probably a bug and not a feature */
- rtems_test_assert(did_run);
+ rtems_test_assert(!did_run);
sc = rtems_task_delete(task);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
@@ -99,6 +93,8 @@ static void Init(rtems_task_argument arg)
#define CONFIGURE_INIT_TASK_PRIORITY 2
+#define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_NO_PREEMPT
+
#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
diff --git a/testsuites/sptests/spthread01/init.c b/testsuites/sptests/spthread01/init.c
index 7cb7d08428..4baf0dba2f 100644
--- a/testsuites/sptests/spthread01/init.c
+++ b/testsuites/sptests/spthread01/init.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2017 embedded brains GmbH & Co. KG
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
diff --git a/testsuites/sptests/spthreadlife01/init.c b/testsuites/sptests/spthreadlife01/init.c
index b2c6634820..c33e8fef35 100644
--- a/testsuites/sptests/spthreadlife01/init.c
+++ b/testsuites/sptests/spthreadlife01/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (c) 2014, 2018 embedded brains GmbH. All rights reserved.
+ * Copyright (C) 2014, 2018 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/spthreadq01/init.c b/testsuites/sptests/spthreadq01/init.c
index 01977fe00d..bb6423ec4f 100644
--- a/testsuites/sptests/spthreadq01/init.c
+++ b/testsuites/sptests/spthreadq01/init.c
@@ -4,7 +4,7 @@
* COPYRIGHT (c) 1989-2009.
* On-Line Applications Research Corporation (OAR).
*
- * Copyright (c) 2016 embedded brains GmbH.
+ * Copyright (c) 2016 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/sptimecounter01/init.c b/testsuites/sptests/sptimecounter01/init.c
index 20a40b4072..ff5fe25a2d 100644
--- a/testsuites/sptests/sptimecounter01/init.c
+++ b/testsuites/sptests/sptimecounter01/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (c) 2015, 2019 embedded brains GmbH. All rights reserved.
+ * Copyright (C) 2015, 2019 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/sptimecounter01/sptimecounter01.doc b/testsuites/sptests/sptimecounter01/sptimecounter01.doc
index 3271e45c88..85a236e68f 100644
--- a/testsuites/sptests/sptimecounter01/sptimecounter01.doc
+++ b/testsuites/sptests/sptimecounter01/sptimecounter01.doc
@@ -1,6 +1,6 @@
# SPDX-License-Identifier: BSD-2-Clause
-# Copyright (c) 2015 embedded brains GmbH. All rights reserved.
+# Copyright (c) 2015 embedded brains GmbH & Co. KG
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/sptimecounter02/init.c b/testsuites/sptests/sptimecounter02/init.c
index e13f9713a7..ff05f147de 100644
--- a/testsuites/sptests/sptimecounter02/init.c
+++ b/testsuites/sptests/sptimecounter02/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (c) 2015 embedded brains GmbH. All rights reserved.
+ * Copyright (C) 2015, 2024 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -61,6 +61,8 @@ const char rtems_test_name[] = "SPTIMECOUNTER 2";
typedef struct {
rtems_test_parallel_context base;
+ const char *test_sep;
+ const char *counter_sep;
struct timecounter tc_null;
uint32_t binuptime_per_job[CPU_COUNT];
sbintime_t duration_per_job[CPU_COUNT];
@@ -90,6 +92,45 @@ static void install_tc_null(timecounter_context *ctx)
rtems_timecounter_install(tc_cpu);
}
+static void test_print_results(
+ const char *driver,
+ timecounter_context *ctx,
+ size_t active_workers
+)
+{
+ const char *value_sep;
+ size_t i;
+
+ if (active_workers == 1) {
+ printf(
+ "%s{\n"
+ " \"timecounter\": \"%s\",\n"
+ " \"counter\": [",
+ ctx->test_sep,
+ driver
+ );
+ ctx->test_sep = ", ";
+ ctx->counter_sep = "\n ";
+ }
+
+ printf("%s[", ctx->counter_sep);
+ ctx->counter_sep = "],\n ";
+ value_sep = "";
+
+ for (i = 0; i < active_workers; ++i) {
+ printf(
+ "%s%" PRIu32,
+ value_sep,
+ ctx->binuptime_per_job[i]
+ );
+ value_sep = ", ";
+ }
+
+ if (active_workers == rtems_scheduler_get_processor_maximum()) {
+ printf("]\n ]\n }");
+ }
+}
+
static rtems_interval test_bintime_init(
rtems_test_parallel_context *base,
void *arg,
@@ -133,25 +174,14 @@ static void test_bintime_fini(
timecounter_context *ctx = (timecounter_context *) base;
size_t i;
- printf(" <BinuptimeTest activeWorker=\"%zu\">\n", active_workers);
-
for (i = 0; i < active_workers; ++i) {
sbintime_t error;
- printf(
- " <Counter worker=\"%zu\">%" PRIu32 "</Counter>\n"
- " <Duration worker=\"%zu\" unit=\"sbintime\">%" PRId64 "</Duration>\n",
- i + 1,
- ctx->binuptime_per_job[i],
- i + 1,
- ctx->duration_per_job[i]
- );
-
error = DURATION_IN_SECONDS * SBT_1S - ctx->duration_per_job[i];
rtems_test_assert(error * error < SBT_1MS * SBT_1MS);
}
- printf(" </BinuptimeTest>\n");
+ test_print_results("Clock Driver", ctx, active_workers);
}
static rtems_interval test_bintime_null_init(
@@ -192,20 +222,7 @@ static void test_bintime_null_fini(
size_t active_workers
)
{
- timecounter_context *ctx = (timecounter_context *) base;
- size_t i;
-
- printf(" <BinuptimeNullTest activeWorker=\"%zu\">\n", active_workers);
-
- for (i = 0; i < active_workers; ++i) {
- printf(
- " <Counter worker=\"%zu\">%" PRIu32 "</Counter>\n",
- i + 1,
- ctx->binuptime_per_job[i]
- );
- }
-
- printf(" </BinuptimeNullTest>\n");
+ test_print_results("Null", (timecounter_context *) base, active_workers);
}
static const rtems_test_parallel_job timecounter_jobs[] = {
@@ -231,8 +248,9 @@ static void Init(rtems_task_argument arg)
TEST_BEGIN();
- printf("<SPTimecounter01>\n");
+ printf("*** BEGIN OF JSON DATA ***\n[\n ");
+ ctx->test_sep = "";
rtems_test_parallel(
&ctx->base,
NULL,
@@ -240,6 +258,8 @@ static void Init(rtems_task_argument arg)
RTEMS_ARRAY_SIZE(timecounter_jobs)
);
+ printf("\n]\n*** END OF JSON DATA ***\n");
+
/* Check for all functions available in the bsd.h user space */
rtems_bsd_bintime(&bt);
@@ -255,8 +275,6 @@ static void Init(rtems_task_argument arg)
rtems_bsd_getmicrouptime(&tv);
rtems_bsd_getnanouptime(&ts);
- printf("</SPTimecounter01>\n");
-
TEST_END();
rtems_test_exit(0);
}
diff --git a/testsuites/sptests/sptimecounter02/sptimecounter02.py b/testsuites/sptests/sptimecounter02/sptimecounter02.py
index 925b3f1d6c..198255c140 100755
--- a/testsuites/sptests/sptimecounter02/sptimecounter02.py
+++ b/testsuites/sptests/sptimecounter02/sptimecounter02.py
@@ -1,42 +1,59 @@
-#!/usr/bin/env python
+# SPDX-License-Identifier: BSD-2-Clause
+# Copyright (C) 2016, 2024 embedded brains GmbH & Co. KG
#
-# Copyright (c) 2016 embedded brains GmbH. All rights reserved.
-#
-# 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.
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+import json
import re
-import libxml2
-from libxml2 import xmlNode
-import matplotlib.pyplot as plt
-data = open('sptimecounter02.scn').read()
-data = re.sub(r'\*\*\*.*\*\*\*', '', data)
-doc = libxml2.parseDoc(data)
-ctx = doc.xpathNewContext()
-
-plt.title('Timestamp Performance')
-plt.xlabel('Active Workers')
-plt.ylabel('Operation Count')
-
-def m(n):
- return int(n.getContent())
-
-def getCounterSums(variant):
- w = 1
- y = []
- while True:
- c = map(m, ctx.xpathEval('/SPTimecounter01/' + variant + '[@activeWorker="' + str(w) + '"]/Counter'))
- if not c:
- break
- y.append(sum(c))
- w = w + 1
- return y
-
-y = getCounterSums('BinuptimeTest')
-x = range(1, len(y) + 1)
-plt.xticks(x)
-plt.plot(x, y, marker = 'o')
-plt.show()
+import matplotlib.pyplot as plt # type: ignore
+from matplotlib import ticker # type: ignore
+
+
+def _plot(data: dict) -> None:
+ _, axes = plt.subplots()
+ axes.set_title("Timestamp Performance")
+ axes.set_xlabel("Active Workers")
+ axes.set_ylabel("Operation Count")
+ x = list(range(1, len(data[0]["counter"]) + 1))
+ axes.xaxis.set_major_locator(ticker.FixedLocator(x))
+ for samples in data:
+ y = [sum(values) for values in samples["counter"]]
+ axes.plot(x,
+ y,
+ label=samples["timecounter"],
+ marker="o")
+ axes.legend(loc="best")
+ plt.savefig("sptimecounter02.png")
+ plt.savefig("sptimecounter02.pdf")
+ plt.close()
+
+
+_JSON_DATA = re.compile(
+ r"\*\*\* BEGIN OF JSON DATA \*\*\*(.*)"
+ r"\*\*\* END OF JSON DATA \*\*\*", re.DOTALL)
+
+with open("sptimecounter02.scn", "r", encoding="utf-8") as src:
+ match = _JSON_DATA.search(src.read())
+ data = json.loads(match.group(1))
+
+_plot(data)
diff --git a/testsuites/sptests/sptimecounter02/sptimecounter02.scn b/testsuites/sptests/sptimecounter02/sptimecounter02.scn
index 0ad38c6f4a..6acc521873 100644
--- a/testsuites/sptests/sptimecounter02/sptimecounter02.scn
+++ b/testsuites/sptests/sptimecounter02/sptimecounter02.scn
@@ -1,1000 +1,40 @@
+
+ SIS - SPARC/RISCV instruction simulator 2.30, copyright Jiri Gaisler 2020
+ Bug-reports to jiri@gaisler.se
+
+ GR740/LEON4 emulation enabled, 4 cpus online, delta 50 clocks
+
+ Loaded build/sparc/gr740/testsuites/sptests/sptimecounter02.exe, entry 0x00000000
+
+
*** BEGIN OF TEST SPTIMECOUNTER 2 ***
-<SPTimecounter01>
- <BinuptimeTest activeWorker="1">
- <Counter worker="1">5433429</Counter>
- <Duration worker="1" unit="sbintime">4291225979</Duration>
- </BinuptimeTest>
- <BinuptimeTest activeWorker="2">
- <Counter worker="1">3832225</Counter>
- <Duration worker="1" unit="sbintime">4290792130</Duration>
- <Counter worker="2">3834316</Counter>
- <Duration worker="2" unit="sbintime">4290790869</Duration>
- </BinuptimeTest>
- <BinuptimeTest activeWorker="3">
- <Counter worker="1">2557440</Counter>
- <Duration worker="1" unit="sbintime">4294943244</Duration>
- <Counter worker="2">2559261</Counter>
- <Duration worker="2" unit="sbintime">4294946681</Duration>
- <Counter worker="3">2559529</Counter>
- <Duration worker="3" unit="sbintime">4294943817</Duration>
- </BinuptimeTest>
- <BinuptimeTest activeWorker="4">
- <Counter worker="1">1916358</Counter>
- <Duration worker="1" unit="sbintime">4291303174</Duration>
- <Counter worker="2">1918101</Counter>
- <Duration worker="2" unit="sbintime">4291303746</Duration>
- <Counter worker="3">1918236</Counter>
- <Duration worker="3" unit="sbintime">4291301112</Duration>
- <Counter worker="4">1918182</Counter>
- <Duration worker="4" unit="sbintime">4291303861</Duration>
- </BinuptimeTest>
- <BinuptimeTest activeWorker="5">
- <Counter worker="1">1437861</Counter>
- <Duration worker="1" unit="sbintime">4292771136</Duration>
- <Counter worker="2">1439416</Counter>
- <Duration worker="2" unit="sbintime">4292769991</Duration>
- <Counter worker="3">1439361</Counter>
- <Duration worker="3" unit="sbintime">4292774000</Duration>
- <Counter worker="4">1439373</Counter>
- <Duration worker="4" unit="sbintime">4292773427</Duration>
- <Counter worker="5">1919046</Counter>
- <Duration worker="5" unit="sbintime">4292771480</Duration>
- </BinuptimeTest>
- <BinuptimeTest activeWorker="6">
- <Counter worker="1">1278255</Counter>
- <Duration worker="1" unit="sbintime">4292980616</Duration>
- <Counter worker="2">1279690</Counter>
- <Duration worker="2" unit="sbintime">4292981762</Duration>
- <Counter worker="3">1279546</Counter>
- <Duration worker="3" unit="sbintime">4292978440</Duration>
- <Counter worker="4">1279558</Counter>
- <Duration worker="4" unit="sbintime">4292978096</Duration>
- <Counter worker="5">1279611</Counter>
- <Duration worker="5" unit="sbintime">4292980043</Duration>
- <Counter worker="6">1279619</Counter>
- <Duration worker="6" unit="sbintime">4292976150</Duration>
- </BinuptimeTest>
- <BinuptimeTest activeWorker="7">
- <Counter worker="1">1022765</Counter>
- <Duration worker="1" unit="sbintime">4294000413</Duration>
- <Counter worker="2">1024240</Counter>
- <Duration worker="2" unit="sbintime">4294002246</Duration>
- <Counter worker="3">1024022</Counter>
- <Duration worker="3" unit="sbintime">4293998007</Duration>
- <Counter worker="4">1024036</Counter>
- <Duration worker="4" unit="sbintime">4293998924</Duration>
- <Counter worker="5">1024020</Counter>
- <Duration worker="5" unit="sbintime">4293998809</Duration>
- <Counter worker="6">1024010</Counter>
- <Duration worker="6" unit="sbintime">4293999382</Duration>
- <Counter worker="7">1535866</Counter>
- <Duration worker="7" unit="sbintime">4293999955</Duration>
- </BinuptimeTest>
- <BinuptimeTest activeWorker="8">
- <Counter worker="1">958721</Counter>
- <Duration worker="1" unit="sbintime">4293767683</Duration>
- <Counter worker="2">960000</Counter>
- <Duration worker="2" unit="sbintime">4293768599</Duration>
- <Counter worker="3">960007</Counter>
- <Duration worker="3" unit="sbintime">4293764018</Duration>
- <Counter worker="4">960007</Counter>
- <Duration worker="4" unit="sbintime">4293764132</Duration>
- <Counter worker="5">960030</Counter>
- <Duration worker="5" unit="sbintime">4293764705</Duration>
- <Counter worker="6">960042</Counter>
- <Duration worker="6" unit="sbintime">4293764590</Duration>
- <Counter worker="7">960019</Counter>
- <Duration worker="7" unit="sbintime">4293768026</Duration>
- <Counter worker="8">959998</Counter>
- <Duration worker="8" unit="sbintime">4293763446</Duration>
- </BinuptimeTest>
- <BinuptimeTest activeWorker="9">
- <Counter worker="1">942346</Counter>
- <Duration worker="1" unit="sbintime">4292128953</Duration>
- <Counter worker="2">943991</Counter>
- <Duration worker="2" unit="sbintime">4292136282</Duration>
- <Counter worker="3">940622</Counter>
- <Duration worker="3" unit="sbintime">4292123913</Duration>
- <Counter worker="4">940597</Counter>
- <Duration worker="4" unit="sbintime">4292128494</Duration>
- <Counter worker="5">941505</Counter>
- <Duration worker="5" unit="sbintime">4292126203</Duration>
- <Counter worker="6">941481</Counter>
- <Duration worker="6" unit="sbintime">4292126204</Duration>
- <Counter worker="7">944352</Counter>
- <Duration worker="7" unit="sbintime">4292126089</Duration>
- <Counter worker="8">944344</Counter>
- <Duration worker="8" unit="sbintime">4292126204</Duration>
- <Counter worker="9">5373049</Counter>
- <Duration worker="9" unit="sbintime">4292132044</Duration>
- </BinuptimeTest>
- <BinuptimeTest activeWorker="10">
- <Counter worker="1">958924</Counter>
- <Duration worker="1" unit="sbintime">4292784422</Duration>
- <Counter worker="2">960306</Counter>
- <Duration worker="2" unit="sbintime">4292785452</Duration>
- <Counter worker="3">958656</Counter>
- <Duration worker="3" unit="sbintime">4292782704</Duration>
- <Counter worker="4">958632</Counter>
- <Duration worker="4" unit="sbintime">4292782704</Duration>
- <Counter worker="5">960299</Counter>
- <Duration worker="5" unit="sbintime">4292781444</Duration>
- <Counter worker="6">960321</Counter>
- <Duration worker="6" unit="sbintime">4292786026</Duration>
- <Counter worker="7">959742</Counter>
- <Duration worker="7" unit="sbintime">4292778810</Duration>
- <Counter worker="8">959726</Counter>
- <Duration worker="8" unit="sbintime">4292783162</Duration>
- <Counter worker="9">3835189</Counter>
- <Duration worker="9" unit="sbintime">4292783734</Duration>
- <Counter worker="10">3835159</Counter>
- <Duration worker="10" unit="sbintime">4292782475</Duration>
- </BinuptimeTest>
- <BinuptimeTest activeWorker="11">
- <Counter worker="1">958317</Counter>
- <Duration worker="1" unit="sbintime">4292020376</Duration>
- <Counter worker="2">959720</Counter>
- <Duration worker="2" unit="sbintime">4292020490</Duration>
- <Counter worker="3">959141</Counter>
- <Duration worker="3" unit="sbintime">4292016024</Duration>
- <Counter worker="4">959171</Counter>
- <Duration worker="4" unit="sbintime">4292020376</Duration>
- <Counter worker="5">959183</Counter>
- <Duration worker="5" unit="sbintime">4292018199</Duration>
- <Counter worker="6">959176</Counter>
- <Duration worker="6" unit="sbintime">4292022666</Duration>
- <Counter worker="7">960245</Counter>
- <Duration worker="7" unit="sbintime">4292020376</Duration>
- <Counter worker="8">960256</Counter>
- <Duration worker="8" unit="sbintime">4292024041</Duration>
- <Counter worker="9">2556834</Counter>
- <Duration worker="9" unit="sbintime">4292019460</Duration>
- <Counter worker="10">2556892</Counter>
- <Duration worker="10" unit="sbintime">4292018314</Duration>
- <Counter worker="11">2556777</Counter>
- <Duration worker="11" unit="sbintime">4292018543</Duration>
- </BinuptimeTest>
- <BinuptimeTest activeWorker="12">
- <Counter worker="1">958527</Counter>
- <Duration worker="1" unit="sbintime">4291119807</Duration>
- <Counter worker="2">959937</Counter>
- <Duration worker="2" unit="sbintime">4291119807</Duration>
- <Counter worker="3">959932</Counter>
- <Duration worker="3" unit="sbintime">4291120379</Duration>
- <Counter worker="4">959924</Counter>
- <Duration worker="4" unit="sbintime">4291120380</Duration>
- <Counter worker="5">959389</Counter>
- <Duration worker="5" unit="sbintime">4291120838</Duration>
- <Counter worker="6">959393</Counter>
- <Duration worker="6" unit="sbintime">4291123701</Duration>
- <Counter worker="7">958279</Counter>
- <Duration worker="7" unit="sbintime">4291118204</Duration>
- <Counter worker="8">958288</Counter>
- <Duration worker="8" unit="sbintime">4291118089</Duration>
- <Counter worker="9">1917514</Counter>
- <Duration worker="9" unit="sbintime">4291120609</Duration>
- <Counter worker="10">1917516</Counter>
- <Duration worker="10" unit="sbintime">4291118318</Duration>
- <Counter worker="11">1917496</Counter>
- <Duration worker="11" unit="sbintime">4291119463</Duration>
- <Counter worker="12">1917477</Counter>
- <Duration worker="12" unit="sbintime">4291116829</Duration>
- </BinuptimeTest>
- <BinuptimeTest activeWorker="13">
- <Counter worker="1">957469</Counter>
- <Duration worker="1" unit="sbintime">4291772986</Duration>
- <Counter worker="2">958901</Counter>
- <Duration worker="2" unit="sbintime">4291772184</Duration>
- <Counter worker="3">959855</Counter>
- <Duration worker="3" unit="sbintime">4291766114</Duration>
- <Counter worker="4">959906</Counter>
- <Duration worker="4" unit="sbintime">4291770695</Duration>
- <Counter worker="5">959953</Counter>
- <Duration worker="5" unit="sbintime">4291779743</Duration>
- <Counter worker="6">959977</Counter>
- <Duration worker="6" unit="sbintime">4291769092</Duration>
- <Counter worker="7">959389</Counter>
- <Duration worker="7" unit="sbintime">4291770810</Duration>
- <Counter worker="8">959385</Counter>
- <Duration worker="8" unit="sbintime">4291766228</Duration>
- <Counter worker="9">1438521</Counter>
- <Duration worker="9" unit="sbintime">4291768748</Duration>
- <Counter worker="10">1438502</Counter>
- <Duration worker="10" unit="sbintime">4291768977</Duration>
- <Counter worker="11">1438548</Counter>
- <Duration worker="11" unit="sbintime">4291766687</Duration>
- <Counter worker="12">1438497</Counter>
- <Duration worker="12" unit="sbintime">4291770237</Duration>
- <Counter worker="13">1917953</Counter>
- <Duration worker="13" unit="sbintime">4291765999</Duration>
- </BinuptimeTest>
- <BinuptimeTest activeWorker="14">
- <Counter worker="1">958554</Counter>
- <Duration worker="1" unit="sbintime">4293977506</Duration>
- <Counter worker="2">959986</Counter>
- <Duration worker="2" unit="sbintime">4293974643</Duration>
- <Counter worker="3">959942</Counter>
- <Duration worker="3" unit="sbintime">4293976246</Duration>
- <Counter worker="4">959946</Counter>
- <Duration worker="4" unit="sbintime">4293971894</Duration>
- <Counter worker="5">959422</Counter>
- <Duration worker="5" unit="sbintime">4293972467</Duration>
- <Counter worker="6">959466</Counter>
- <Duration worker="6" unit="sbintime">4293976819</Duration>
- <Counter worker="7">960436</Counter>
- <Duration worker="7" unit="sbintime">4293975216</Duration>
- <Counter worker="8">960437</Counter>
- <Duration worker="8" unit="sbintime">4293975216</Duration>
- <Counter worker="9">1280753</Counter>
- <Duration worker="9" unit="sbintime">4293970749</Duration>
- <Counter worker="10">1280760</Counter>
- <Duration worker="10" unit="sbintime">4293974529</Duration>
- <Counter worker="11">1278618</Counter>
- <Duration worker="11" unit="sbintime">4293975445</Duration>
- <Counter worker="12">1278603</Counter>
- <Duration worker="12" unit="sbintime">4293971665</Duration>
- <Counter worker="13">1278806</Counter>
- <Duration worker="13" unit="sbintime">4293971894</Duration>
- <Counter worker="14">1278798</Counter>
- <Duration worker="14" unit="sbintime">4293975673</Duration>
- </BinuptimeTest>
- <BinuptimeTest activeWorker="15">
- <Counter worker="1">958175</Counter>
- <Duration worker="1" unit="sbintime">4291365823</Duration>
- <Counter worker="2">959788</Counter>
- <Duration worker="2" unit="sbintime">4291366969</Duration>
- <Counter worker="3">959270</Counter>
- <Duration worker="3" unit="sbintime">4291360783</Duration>
- <Counter worker="4">959251</Counter>
- <Duration worker="4" unit="sbintime">4291365250</Duration>
- <Counter worker="5">958544</Counter>
- <Duration worker="5" unit="sbintime">4291366854</Duration>
- <Counter worker="6">958536</Counter>
- <Duration worker="6" unit="sbintime">4291362502</Duration>
- <Counter worker="7">959264</Counter>
- <Duration worker="7" unit="sbintime">4291364105</Duration>
- <Counter worker="8">959249</Counter>
- <Duration worker="8" unit="sbintime">4291368571</Duration>
- <Counter worker="9">1021329</Counter>
- <Duration worker="9" unit="sbintime">4291362960</Duration>
- <Counter worker="10">1021315</Counter>
- <Duration worker="10" unit="sbintime">4291366854</Duration>
- <Counter worker="11">1022881</Counter>
- <Duration worker="11" unit="sbintime">4291367426</Duration>
- <Counter worker="12">1022857</Counter>
- <Duration worker="12" unit="sbintime">4291365135</Duration>
- <Counter worker="13">1022969</Counter>
- <Duration worker="13" unit="sbintime">4291365135</Duration>
- <Counter worker="14">1022963</Counter>
- <Duration worker="14" unit="sbintime">4291364677</Duration>
- <Counter worker="15">1536939</Counter>
- <Duration worker="15" unit="sbintime">4291362960</Duration>
- </BinuptimeTest>
- <BinuptimeTest activeWorker="16">
- <Counter worker="1">958710</Counter>
- <Duration worker="1" unit="sbintime">4294622324</Duration>
- <Counter worker="2">960272</Counter>
- <Duration worker="2" unit="sbintime">4294611444</Duration>
- <Counter worker="3">960318</Counter>
- <Duration worker="3" unit="sbintime">4294610413</Duration>
- <Counter worker="4">960325</Counter>
- <Duration worker="4" unit="sbintime">4294610298</Duration>
- <Counter worker="5">957982</Counter>
- <Duration worker="5" unit="sbintime">4294606977</Duration>
- <Counter worker="6">958010</Counter>
- <Duration worker="6" unit="sbintime">4294611558</Duration>
- <Counter worker="7">960811</Counter>
- <Duration worker="7" unit="sbintime">4294608122</Duration>
- <Counter worker="8">960866</Counter>
- <Duration worker="8" unit="sbintime">4294608123</Duration>
- <Counter worker="9">956789</Counter>
- <Duration worker="9" unit="sbintime">4294606175</Duration>
- <Counter worker="10">956816</Counter>
- <Duration worker="10" unit="sbintime">4294610757</Duration>
- <Counter worker="11">961812</Counter>
- <Duration worker="11" unit="sbintime">4294611787</Duration>
- <Counter worker="12">961815</Counter>
- <Duration worker="12" unit="sbintime">4294610069</Duration>
- <Counter worker="13">959509</Counter>
- <Duration worker="13" unit="sbintime">4294610183</Duration>
- <Counter worker="14">959511</Counter>
- <Duration worker="14" unit="sbintime">4294610070</Duration>
- <Counter worker="15">960164</Counter>
- <Duration worker="15" unit="sbintime">4294612474</Duration>
- <Counter worker="16">960191</Counter>
- <Duration worker="16" unit="sbintime">4294607893</Duration>
- </BinuptimeTest>
- <BinuptimeTest activeWorker="17">
- <Counter worker="1">944571</Counter>
- <Duration worker="1" unit="sbintime">4290823168</Duration>
- <Counter worker="2">946274</Counter>
- <Duration worker="2" unit="sbintime">4290823855</Duration>
- <Counter worker="3">945546</Counter>
- <Duration worker="3" unit="sbintime">4290821565</Duration>
- <Counter worker="4">945535</Counter>
- <Duration worker="4" unit="sbintime">4290821564</Duration>
- <Counter worker="5">943940</Counter>
- <Duration worker="5" unit="sbintime">4290819274</Duration>
- <Counter worker="6">943961</Counter>
- <Duration worker="6" unit="sbintime">4290823741</Duration>
- <Counter worker="7">945996</Counter>
- <Duration worker="7" unit="sbintime">4290821565</Duration>
- <Counter worker="8">945999</Counter>
- <Duration worker="8" unit="sbintime">4290821564</Duration>
- <Counter worker="9">944038</Counter>
- <Duration worker="9" unit="sbintime">4290823969</Duration>
- <Counter worker="10">944031</Counter>
- <Duration worker="10" unit="sbintime">4290819503</Duration>
- <Counter worker="11">944055</Counter>
- <Duration worker="11" unit="sbintime">4290824543</Duration>
- <Counter worker="12">944036</Counter>
- <Duration worker="12" unit="sbintime">4290820076</Duration>
- <Counter worker="13">945985</Counter>
- <Duration worker="13" unit="sbintime">4290821221</Duration>
- <Counter worker="14">945985</Counter>
- <Duration worker="14" unit="sbintime">4290821221</Duration>
- <Counter worker="15">946541</Counter>
- <Duration worker="15" unit="sbintime">4290819503</Duration>
- <Counter worker="16">946539</Counter>
- <Duration worker="16" unit="sbintime">4290819388</Duration>
- <Counter worker="17">5319165</Counter>
- <Duration worker="17" unit="sbintime">4290821221</Duration>
- </BinuptimeTest>
- <BinuptimeTest activeWorker="18">
- <Counter worker="1">957435</Counter>
- <Duration worker="1" unit="sbintime">4292140979</Duration>
- <Counter worker="2">959052</Counter>
- <Duration worker="2" unit="sbintime">4292138230</Duration>
- <Counter worker="3">959020</Counter>
- <Duration worker="3" unit="sbintime">4292138115</Duration>
- <Counter worker="4">959034</Counter>
- <Duration worker="4" unit="sbintime">4292138230</Duration>
- <Counter worker="5">959057</Counter>
- <Duration worker="5" unit="sbintime">4292137199</Duration>
- <Counter worker="6">959078</Counter>
- <Duration worker="6" unit="sbintime">4292136969</Duration>
- <Counter worker="7">959758</Counter>
- <Duration worker="7" unit="sbintime">4292139375</Duration>
- <Counter worker="8">959770</Counter>
- <Duration worker="8" unit="sbintime">4292139261</Duration>
- <Counter worker="9">959102</Counter>
- <Duration worker="9" unit="sbintime">4292136855</Duration>
- <Counter worker="10">959101</Counter>
- <Duration worker="10" unit="sbintime">4292141322</Duration>
- <Counter worker="11">957493</Counter>
- <Duration worker="11" unit="sbintime">4292141322</Duration>
- <Counter worker="12">957490</Counter>
- <Duration worker="12" unit="sbintime">4292136741</Duration>
- <Counter worker="13">960923</Counter>
- <Duration worker="13" unit="sbintime">4292141895</Duration>
- <Counter worker="14">960933</Counter>
- <Duration worker="14" unit="sbintime">4292139146</Duration>
- <Counter worker="15">958227</Counter>
- <Duration worker="15" unit="sbintime">4292139032</Duration>
- <Counter worker="16">958201</Counter>
- <Duration worker="16" unit="sbintime">4292134565</Duration>
- <Counter worker="17">3833107</Counter>
- <Duration worker="17" unit="sbintime">4292138229</Duration>
- <Counter worker="18">3833100</Counter>
- <Duration worker="18" unit="sbintime">4292137085</Duration>
- </BinuptimeTest>
- <BinuptimeTest activeWorker="19">
- <Counter worker="1">959131</Counter>
- <Duration worker="1" unit="sbintime">4295003603</Duration>
- <Counter worker="2">960752</Counter>
- <Duration worker="2" unit="sbintime">4295005321</Duration>
- <Counter worker="3">958958</Counter>
- <Duration worker="3" unit="sbintime">4295009444</Duration>
- <Counter worker="4">958960</Counter>
- <Duration worker="4" unit="sbintime">4295001312</Duration>
- <Counter worker="5">960052</Counter>
- <Duration worker="5" unit="sbintime">4295001771</Duration>
- <Counter worker="6">960086</Counter>
- <Duration worker="6" unit="sbintime">4295001885</Duration>
- <Counter worker="7">960031</Counter>
- <Duration worker="7" unit="sbintime">4295003603</Duration>
- <Counter worker="8">960043</Counter>
- <Duration worker="8" unit="sbintime">4294999021</Duration>
- <Counter worker="9">961650</Counter>
- <Duration worker="9" unit="sbintime">4295005435</Duration>
- <Counter worker="10">961687</Counter>
- <Duration worker="10" unit="sbintime">4295001885</Duration>
- <Counter worker="11">960613</Counter>
- <Duration worker="11" unit="sbintime">4295011276</Duration>
- <Counter worker="12">960593</Counter>
- <Duration worker="12" unit="sbintime">4295000854</Duration>
- <Counter worker="13">959538</Counter>
- <Duration worker="13" unit="sbintime">4295001427</Duration>
- <Counter worker="14">959574</Counter>
- <Duration worker="14" unit="sbintime">4295001427</Duration>
- <Counter worker="15">956810</Counter>
- <Duration worker="15" unit="sbintime">4295003717</Duration>
- <Counter worker="16">956818</Counter>
- <Duration worker="16" unit="sbintime">4295003603</Duration>
- <Counter worker="17">2557866</Counter>
- <Duration worker="17" unit="sbintime">4295002687</Duration>
- <Counter worker="18">2557901</Counter>
- <Duration worker="18" unit="sbintime">4295000969</Duration>
- <Counter worker="19">2557791</Counter>
- <Duration worker="19" unit="sbintime">4295000968</Duration>
- </BinuptimeTest>
- <BinuptimeTest activeWorker="20">
- <Counter worker="1">956818</Counter>
- <Duration worker="1" unit="sbintime">4290849167</Duration>
- <Counter worker="2">958477</Counter>
- <Duration worker="2" unit="sbintime">4290849052</Duration>
- <Counter worker="3">959502</Counter>
- <Duration worker="3" unit="sbintime">4290848594</Duration>
- <Counter worker="4">959493</Counter>
- <Duration worker="4" unit="sbintime">4290848594</Duration>
- <Counter worker="5">959067</Counter>
- <Duration worker="5" unit="sbintime">4290848021</Duration>
- <Counter worker="6">959118</Counter>
- <Duration worker="6" unit="sbintime">4290848021</Duration>
- <Counter worker="7">958349</Counter>
- <Duration worker="7" unit="sbintime">4290853175</Duration>
- <Counter worker="8">958323</Counter>
- <Duration worker="8" unit="sbintime">4290846303</Duration>
- <Counter worker="9">957048</Counter>
- <Duration worker="9" unit="sbintime">4290847563</Duration>
- <Counter worker="10">957074</Counter>
- <Duration worker="10" unit="sbintime">4290847678</Duration>
- <Counter worker="11">960084</Counter>
- <Duration worker="11" unit="sbintime">4290846418</Duration>
- <Counter worker="12">960074</Counter>
- <Duration worker="12" unit="sbintime">4290846418</Duration>
- <Counter worker="13">959020</Counter>
- <Duration worker="13" unit="sbintime">4290845846</Duration>
- <Counter worker="14">959039</Counter>
- <Duration worker="14" unit="sbintime">4290850426</Duration>
- <Counter worker="15">958126</Counter>
- <Duration worker="15" unit="sbintime">4290845960</Duration>
- <Counter worker="16">958095</Counter>
- <Duration worker="16" unit="sbintime">4290845845</Duration>
- <Counter worker="17">1916573</Counter>
- <Duration worker="17" unit="sbintime">4290848136</Duration>
- <Counter worker="18">1916534</Counter>
- <Duration worker="18" unit="sbintime">4290845845</Duration>
- <Counter worker="19">1916572</Counter>
- <Duration worker="19" unit="sbintime">4290848136</Duration>
- <Counter worker="20">1916533</Counter>
- <Duration worker="20" unit="sbintime">4290845845</Duration>
- </BinuptimeTest>
- <BinuptimeTest activeWorker="21">
- <Counter worker="1">958421</Counter>
- <Duration worker="1" unit="sbintime">4294761939</Duration>
- <Counter worker="2">960077</Counter>
- <Duration worker="2" unit="sbintime">4294760221</Duration>
- <Counter worker="3">959148</Counter>
- <Duration worker="3" unit="sbintime">4294754953</Duration>
- <Counter worker="4">959141</Counter>
- <Duration worker="4" unit="sbintime">4294759649</Duration>
- <Counter worker="5">959688</Counter>
- <Duration worker="5" unit="sbintime">4294754494</Duration>
- <Counter worker="6">959736</Counter>
- <Duration worker="6" unit="sbintime">4294759076</Duration>
- <Counter worker="7">960425</Counter>
- <Duration worker="7" unit="sbintime">4294760221</Duration>
- <Counter worker="8">960396</Counter>
- <Duration worker="8" unit="sbintime">4294755755</Duration>
- <Counter worker="9">958447</Counter>
- <Duration worker="9" unit="sbintime">4294756213</Duration>
- <Counter worker="10">958469</Counter>
- <Duration worker="10" unit="sbintime">4294756327</Duration>
- <Counter worker="11">960168</Counter>
- <Duration worker="11" unit="sbintime">4294759076</Duration>
- <Counter worker="12">960140</Counter>
- <Duration worker="12" unit="sbintime">4294754495</Duration>
- <Counter worker="13">961301</Counter>
- <Duration worker="13" unit="sbintime">4294767323</Duration>
- <Counter worker="14">961331</Counter>
- <Duration worker="14" unit="sbintime">4294756785</Duration>
- <Counter worker="15">958210</Counter>
- <Duration worker="15" unit="sbintime">4294757358</Duration>
- <Counter worker="16">958203</Counter>
- <Duration worker="16" unit="sbintime">4294757358</Duration>
- <Counter worker="17">1439060</Counter>
- <Duration worker="17" unit="sbintime">4294757931</Duration>
- <Counter worker="18">1439023</Counter>
- <Duration worker="18" unit="sbintime">4294758159</Duration>
- <Counter worker="19">1439103</Counter>
- <Duration worker="19" unit="sbintime">4294758045</Duration>
- <Counter worker="20">1439064</Counter>
- <Duration worker="20" unit="sbintime">4294757930</Duration>
- <Counter worker="21">1918367</Counter>
- <Duration worker="21" unit="sbintime">4294758045</Duration>
- </BinuptimeTest>
- <BinuptimeTest activeWorker="22">
- <Counter worker="1">958582</Counter>
- <Duration worker="1" unit="sbintime">4291633485</Duration>
- <Counter worker="2">960264</Counter>
- <Duration worker="2" unit="sbintime">4291633599</Duration>
- <Counter worker="3">958919</Counter>
- <Duration worker="3" unit="sbintime">4291636921</Duration>
- <Counter worker="4">958961</Counter>
- <Duration worker="4" unit="sbintime">4291632912</Duration>
- <Counter worker="5">958913</Counter>
- <Duration worker="5" unit="sbintime">4291634631</Duration>
- <Counter worker="6">958982</Counter>
- <Duration worker="6" unit="sbintime">4291634630</Duration>
- <Counter worker="7">957838</Counter>
- <Duration worker="7" unit="sbintime">4291633027</Duration>
- <Counter worker="8">957849</Counter>
- <Duration worker="8" unit="sbintime">4291632912</Duration>
- <Counter worker="9">958935</Counter>
- <Duration worker="9" unit="sbintime">4291632340</Duration>
- <Counter worker="10">958978</Counter>
- <Duration worker="10" unit="sbintime">4291632455</Duration>
- <Counter worker="11">958040</Counter>
- <Duration worker="11" unit="sbintime">4291631194</Duration>
- <Counter worker="12">958060</Counter>
- <Duration worker="12" unit="sbintime">4291635203</Duration>
- <Counter worker="13">958031</Counter>
- <Duration worker="13" unit="sbintime">4291634745</Duration>
- <Counter worker="14">958035</Counter>
- <Duration worker="14" unit="sbintime">4291630163</Duration>
- <Counter worker="15">959809</Counter>
- <Duration worker="15" unit="sbintime">4291635776</Duration>
- <Counter worker="16">959833</Counter>
- <Duration worker="16" unit="sbintime">4291631309</Duration>
- <Counter worker="17">1278240</Counter>
- <Duration worker="17" unit="sbintime">4291631194</Duration>
- <Counter worker="18">1278239</Counter>
- <Duration worker="18" unit="sbintime">4291634745</Duration>
- <Counter worker="19">1278855</Counter>
- <Duration worker="19" unit="sbintime">4291629591</Duration>
- <Counter worker="20">1278855</Counter>
- <Duration worker="20" unit="sbintime">4291632913</Duration>
- <Counter worker="21">1277332</Counter>
- <Duration worker="21" unit="sbintime">4291632912</Duration>
- <Counter worker="22">1277327</Counter>
- <Duration worker="22" unit="sbintime">4291635891</Duration>
- </BinuptimeTest>
- <BinuptimeTest activeWorker="23">
- <Counter worker="1">958870</Counter>
- <Duration worker="1" unit="sbintime">4294362908</Duration>
- <Counter worker="2">960652</Counter>
- <Duration worker="2" unit="sbintime">4294358327</Duration>
- <Counter worker="3">957192</Counter>
- <Duration worker="3" unit="sbintime">4294358327</Duration>
- <Counter worker="4">957194</Counter>
- <Duration worker="4" unit="sbintime">4294362793</Duration>
- <Counter worker="5">960437</Counter>
- <Duration worker="5" unit="sbintime">4294358900</Duration>
- <Counter worker="6">960480</Counter>
- <Duration worker="6" unit="sbintime">4294359014</Duration>
- <Counter worker="7">958820</Counter>
- <Duration worker="7" unit="sbintime">4294362908</Duration>
- <Counter worker="8">958835</Counter>
- <Duration worker="8" unit="sbintime">4294360045</Duration>
- <Counter worker="9">956488</Counter>
- <Duration worker="9" unit="sbintime">4294360617</Duration>
- <Counter worker="10">956549</Counter>
- <Duration worker="10" unit="sbintime">4294356151</Duration>
- <Counter worker="11">961870</Counter>
- <Duration worker="11" unit="sbintime">4294356151</Duration>
- <Counter worker="12">961835</Counter>
- <Duration worker="12" unit="sbintime">4294360732</Duration>
- <Counter worker="13">961302</Counter>
- <Duration worker="13" unit="sbintime">4294361191</Duration>
- <Counter worker="14">961345</Counter>
- <Duration worker="14" unit="sbintime">4294356724</Duration>
- <Counter worker="15">956489</Counter>
- <Duration worker="15" unit="sbintime">4294360045</Duration>
- <Counter worker="16">956506</Counter>
- <Duration worker="16" unit="sbintime">4294360160</Duration>
- <Counter worker="17">1021387</Counter>
- <Duration worker="17" unit="sbintime">4294356952</Duration>
- <Counter worker="18">1021417</Counter>
- <Duration worker="18" unit="sbintime">4294360961</Duration>
- <Counter worker="19">1021929</Counter>
- <Duration worker="19" unit="sbintime">4294359243</Duration>
- <Counter worker="20">1021926</Counter>
- <Duration worker="20" unit="sbintime">4294359930</Duration>
- <Counter worker="21">1024098</Counter>
- <Duration worker="21" unit="sbintime">4294358327</Duration>
- <Counter worker="22">1024083</Counter>
- <Duration worker="22" unit="sbintime">4294358098</Duration>
- <Counter worker="23">1537525</Counter>
- <Duration worker="23" unit="sbintime">4294361076</Duration>
- </BinuptimeTest>
- <BinuptimeTest activeWorker="24">
- <Counter worker="1">958462</Counter>
- <Duration worker="1" unit="sbintime">4294344239</Duration>
- <Counter worker="2">960113</Counter>
- <Duration worker="2" unit="sbintime">4294339773</Duration>
- <Counter worker="3">959461</Counter>
- <Duration worker="3" unit="sbintime">4294341949</Duration>
- <Counter worker="4">959473</Counter>
- <Duration worker="4" unit="sbintime">4294344812</Duration>
- <Counter worker="5">958912</Counter>
- <Duration worker="5" unit="sbintime">4294341490</Duration>
- <Counter worker="6">958938</Counter>
- <Duration worker="6" unit="sbintime">4294341376</Duration>
- <Counter worker="7">958935</Counter>
- <Duration worker="7" unit="sbintime">4294340230</Duration>
- <Counter worker="8">958921</Counter>
- <Duration worker="8" unit="sbintime">4294340345</Duration>
- <Counter worker="9">959876</Counter>
- <Duration worker="9" unit="sbintime">4294341491</Duration>
- <Counter worker="10">959892</Counter>
- <Duration worker="10" unit="sbintime">4294337138</Duration>
- <Counter worker="11">959045</Counter>
- <Duration worker="11" unit="sbintime">4294338284</Duration>
- <Counter worker="12">959020</Counter>
- <Duration worker="12" unit="sbintime">4294342636</Duration>
- <Counter worker="13">961635</Counter>
- <Duration worker="13" unit="sbintime">4294341033</Duration>
- <Counter worker="14">961646</Counter>
- <Duration worker="14" unit="sbintime">4294343782</Duration>
- <Counter worker="15">956010</Counter>
- <Duration worker="15" unit="sbintime">4294338856</Duration>
- <Counter worker="16">956016</Counter>
- <Duration worker="16" unit="sbintime">4294343208</Duration>
- <Counter worker="17">960207</Counter>
- <Duration worker="17" unit="sbintime">4294339887</Duration>
- <Counter worker="18">960171</Counter>
- <Duration worker="18" unit="sbintime">4294339772</Duration>
- <Counter worker="19">960089</Counter>
- <Duration worker="19" unit="sbintime">4294340346</Duration>
- <Counter worker="20">960077</Counter>
- <Duration worker="20" unit="sbintime">4294340346</Duration>
- <Counter worker="21">957194</Counter>
- <Duration worker="21" unit="sbintime">4294339315</Duration>
- <Counter worker="22">957184</Counter>
- <Duration worker="22" unit="sbintime">4294339200</Duration>
- <Counter worker="23">959119</Counter>
- <Duration worker="23" unit="sbintime">4294344812</Duration>
- <Counter worker="24">959094</Counter>
- <Duration worker="24" unit="sbintime">4294341948</Duration>
- </BinuptimeTest>
- <BinuptimeNullTest activeWorker="1">
- <Counter worker="1">19386783</Counter>
- </BinuptimeNullTest>
- <BinuptimeNullTest activeWorker="2">
- <Counter worker="1">18966996</Counter>
- <Counter worker="2">18976413</Counter>
- </BinuptimeNullTest>
- <BinuptimeNullTest activeWorker="3">
- <Counter worker="1">18974430</Counter>
- <Counter worker="2">18983328</Counter>
- <Counter worker="3">19416623</Counter>
- </BinuptimeNullTest>
- <BinuptimeNullTest activeWorker="4">
- <Counter worker="1">19008674</Counter>
- <Counter worker="2">19018198</Counter>
- <Counter worker="3">19008964</Counter>
- <Counter worker="4">19008692</Counter>
- </BinuptimeNullTest>
- <BinuptimeNullTest activeWorker="5">
- <Counter worker="1">19020812</Counter>
- <Counter worker="2">19030365</Counter>
- <Counter worker="3">19005570</Counter>
- <Counter worker="4">19005064</Counter>
- <Counter worker="5">19403356</Counter>
- </BinuptimeNullTest>
- <BinuptimeNullTest activeWorker="6">
- <Counter worker="1">19022252</Counter>
- <Counter worker="2">19032184</Counter>
- <Counter worker="3">18989113</Counter>
- <Counter worker="4">18988868</Counter>
- <Counter worker="5">19032006</Counter>
- <Counter worker="6">19033563</Counter>
- </BinuptimeNullTest>
- <BinuptimeNullTest activeWorker="7">
- <Counter worker="1">19030040</Counter>
- <Counter worker="2">19040103</Counter>
- <Counter worker="3">19027768</Counter>
- <Counter worker="4">19027395</Counter>
- <Counter worker="5">19032442</Counter>
- <Counter worker="6">19034065</Counter>
- <Counter worker="7">19412449</Counter>
- </BinuptimeNullTest>
- <BinuptimeNullTest activeWorker="8">
- <Counter worker="1">19025699</Counter>
- <Counter worker="2">19035838</Counter>
- <Counter worker="3">19004615</Counter>
- <Counter worker="4">19004706</Counter>
- <Counter worker="5">19030244</Counter>
- <Counter worker="6">19032199</Counter>
- <Counter worker="7">19024756</Counter>
- <Counter worker="8">19023713</Counter>
- </BinuptimeNullTest>
- <BinuptimeNullTest activeWorker="9">
- <Counter worker="1">19013669</Counter>
- <Counter worker="2">19023620</Counter>
- <Counter worker="3">19002201</Counter>
- <Counter worker="4">19002347</Counter>
- <Counter worker="5">19045897</Counter>
- <Counter worker="6">19048005</Counter>
- <Counter worker="7">19008510</Counter>
- <Counter worker="8">19007710</Counter>
- <Counter worker="9">19395234</Counter>
- </BinuptimeNullTest>
- <BinuptimeNullTest activeWorker="10">
- <Counter worker="1">19027122</Counter>
- <Counter worker="2">19037161</Counter>
- <Counter worker="3">19009823</Counter>
- <Counter worker="4">19010172</Counter>
- <Counter worker="5">19038718</Counter>
- <Counter worker="6">19040747</Counter>
- <Counter worker="7">19031970</Counter>
- <Counter worker="8">19031243</Counter>
- <Counter worker="9">19073032</Counter>
- <Counter worker="10">19074455</Counter>
- </BinuptimeNullTest>
- <BinuptimeNullTest activeWorker="11">
- <Counter worker="1">19028856</Counter>
- <Counter worker="2">19038950</Counter>
- <Counter worker="3">19011087</Counter>
- <Counter worker="4">19010918</Counter>
- <Counter worker="5">19042804</Counter>
- <Counter worker="6">19044814</Counter>
- <Counter worker="7">19009000</Counter>
- <Counter worker="8">19008045</Counter>
- <Counter worker="9">19062056</Counter>
- <Counter worker="10">19063324</Counter>
- <Counter worker="11">19425237</Counter>
- </BinuptimeNullTest>
- <BinuptimeNullTest activeWorker="12">
- <Counter worker="1">19000686</Counter>
- <Counter worker="2">19010524</Counter>
- <Counter worker="3">19011200</Counter>
- <Counter worker="4">19011161</Counter>
- <Counter worker="5">19040651</Counter>
- <Counter worker="6">19042336</Counter>
- <Counter worker="7">19008991</Counter>
- <Counter worker="8">19008322</Counter>
- <Counter worker="9">19057966</Counter>
- <Counter worker="10">19059942</Counter>
- <Counter worker="11">19025294</Counter>
- <Counter worker="12">19024237</Counter>
- </BinuptimeNullTest>
- <BinuptimeNullTest activeWorker="13">
- <Counter worker="1">19035788</Counter>
- <Counter worker="2">19045670</Counter>
- <Counter worker="3">19019672</Counter>
- <Counter worker="4">19019535</Counter>
- <Counter worker="5">19057435</Counter>
- <Counter worker="6">19059507</Counter>
- <Counter worker="7">19015462</Counter>
- <Counter worker="8">19015005</Counter>
- <Counter worker="9">19075133</Counter>
- <Counter worker="10">19076837</Counter>
- <Counter worker="11">19015711</Counter>
- <Counter worker="12">19014041</Counter>
- <Counter worker="13">19397278</Counter>
- </BinuptimeNullTest>
- <BinuptimeNullTest activeWorker="14">
- <Counter worker="1">19042430</Counter>
- <Counter worker="2">19052163</Counter>
- <Counter worker="3">18991353</Counter>
- <Counter worker="4">18991104</Counter>
- <Counter worker="5">19055723</Counter>
- <Counter worker="6">19057975</Counter>
- <Counter worker="7">19037925</Counter>
- <Counter worker="8">19037320</Counter>
- <Counter worker="9">19093382</Counter>
- <Counter worker="10">19095573</Counter>
- <Counter worker="11">19013959</Counter>
- <Counter worker="12">19012664</Counter>
- <Counter worker="13">19047902</Counter>
- <Counter worker="14">19049501</Counter>
- </BinuptimeNullTest>
- <BinuptimeNullTest activeWorker="15">
- <Counter worker="1">19031341</Counter>
- <Counter worker="2">19041295</Counter>
- <Counter worker="3">19021603</Counter>
- <Counter worker="4">19021349</Counter>
- <Counter worker="5">19070154</Counter>
- <Counter worker="6">19072132</Counter>
- <Counter worker="7">19012455</Counter>
- <Counter worker="8">19011763</Counter>
- <Counter worker="9">19078313</Counter>
- <Counter worker="10">19081070</Counter>
- <Counter worker="11">19007359</Counter>
- <Counter worker="12">19006010</Counter>
- <Counter worker="13">19079061</Counter>
- <Counter worker="14">19080701</Counter>
- <Counter worker="15">19419748</Counter>
- </BinuptimeNullTest>
- <BinuptimeNullTest activeWorker="16">
- <Counter worker="1">19026392</Counter>
- <Counter worker="2">19036011</Counter>
- <Counter worker="3">19020535</Counter>
- <Counter worker="4">19020505</Counter>
- <Counter worker="5">19027761</Counter>
- <Counter worker="6">19029769</Counter>
- <Counter worker="7">19007387</Counter>
- <Counter worker="8">19006701</Counter>
- <Counter worker="9">19079449</Counter>
- <Counter worker="10">19081866</Counter>
- <Counter worker="11">19016942</Counter>
- <Counter worker="12">19015669</Counter>
- <Counter worker="13">19053837</Counter>
- <Counter worker="14">19056122</Counter>
- <Counter worker="15">19017232</Counter>
- <Counter worker="16">19015864</Counter>
- </BinuptimeNullTest>
- <BinuptimeNullTest activeWorker="17">
- <Counter worker="1">19024720</Counter>
- <Counter worker="2">19034397</Counter>
- <Counter worker="3">19010358</Counter>
- <Counter worker="4">19009952</Counter>
- <Counter worker="5">19045360</Counter>
- <Counter worker="6">19047250</Counter>
- <Counter worker="7">19015505</Counter>
- <Counter worker="8">19014894</Counter>
- <Counter worker="9">19067467</Counter>
- <Counter worker="10">19069766</Counter>
- <Counter worker="11">19001455</Counter>
- <Counter worker="12">19000148</Counter>
- <Counter worker="13">19062397</Counter>
- <Counter worker="14">19064161</Counter>
- <Counter worker="15">18988213</Counter>
- <Counter worker="16">18986839</Counter>
- <Counter worker="17">19392710</Counter>
- </BinuptimeNullTest>
- <BinuptimeNullTest activeWorker="18">
- <Counter worker="1">19014459</Counter>
- <Counter worker="2">19024385</Counter>
- <Counter worker="3">19004536</Counter>
- <Counter worker="4">19004360</Counter>
- <Counter worker="5">19059651</Counter>
- <Counter worker="6">19061446</Counter>
- <Counter worker="7">18995175</Counter>
- <Counter worker="8">18994526</Counter>
- <Counter worker="9">19069645</Counter>
- <Counter worker="10">19072049</Counter>
- <Counter worker="11">19020094</Counter>
- <Counter worker="12">19018465</Counter>
- <Counter worker="13">19084049</Counter>
- <Counter worker="14">19085700</Counter>
- <Counter worker="15">19010799</Counter>
- <Counter worker="16">19009469</Counter>
- <Counter worker="17">19062621</Counter>
- <Counter worker="18">19062665</Counter>
- </BinuptimeNullTest>
- <BinuptimeNullTest activeWorker="19">
- <Counter worker="1">19027369</Counter>
- <Counter worker="2">19037193</Counter>
- <Counter worker="3">19017667</Counter>
- <Counter worker="4">19017624</Counter>
- <Counter worker="5">19025425</Counter>
- <Counter worker="6">19027799</Counter>
- <Counter worker="7">19017922</Counter>
- <Counter worker="8">19017381</Counter>
- <Counter worker="9">19029266</Counter>
- <Counter worker="10">19031825</Counter>
- <Counter worker="11">19025025</Counter>
- <Counter worker="12">19023564</Counter>
- <Counter worker="13">19057381</Counter>
- <Counter worker="14">19059412</Counter>
- <Counter worker="15">19025461</Counter>
- <Counter worker="16">19023734</Counter>
- <Counter worker="17">19049991</Counter>
- <Counter worker="18">19051542</Counter>
- <Counter worker="19">19418712</Counter>
- </BinuptimeNullTest>
- <BinuptimeNullTest activeWorker="20">
- <Counter worker="1">19042934</Counter>
- <Counter worker="2">19052696</Counter>
- <Counter worker="3">19038771</Counter>
- <Counter worker="4">19038516</Counter>
- <Counter worker="5">19033526</Counter>
- <Counter worker="6">19035338</Counter>
- <Counter worker="7">19043236</Counter>
- <Counter worker="8">19042713</Counter>
- <Counter worker="9">19086859</Counter>
- <Counter worker="10">19089153</Counter>
- <Counter worker="11">19022766</Counter>
- <Counter worker="12">19021740</Counter>
- <Counter worker="13">19061402</Counter>
- <Counter worker="14">19063648</Counter>
- <Counter worker="15">19019723</Counter>
- <Counter worker="16">19018344</Counter>
- <Counter worker="17">19049944</Counter>
- <Counter worker="18">19051860</Counter>
- <Counter worker="19">19024515</Counter>
- <Counter worker="20">19024160</Counter>
- </BinuptimeNullTest>
- <BinuptimeNullTest activeWorker="21">
- <Counter worker="1">19024204</Counter>
- <Counter worker="2">19034080</Counter>
- <Counter worker="3">19000776</Counter>
- <Counter worker="4">19000755</Counter>
- <Counter worker="5">19051386</Counter>
- <Counter worker="6">19053223</Counter>
- <Counter worker="7">18986331</Counter>
- <Counter worker="8">18985787</Counter>
- <Counter worker="9">19090476</Counter>
- <Counter worker="10">19093070</Counter>
- <Counter worker="11">19014901</Counter>
- <Counter worker="12">19013812</Counter>
- <Counter worker="13">19076062</Counter>
- <Counter worker="14">19077825</Counter>
- <Counter worker="15">19009098</Counter>
- <Counter worker="16">19007749</Counter>
- <Counter worker="17">19068241</Counter>
- <Counter worker="18">19070586</Counter>
- <Counter worker="19">18985454</Counter>
- <Counter worker="20">18984893</Counter>
- <Counter worker="21">19400999</Counter>
- </BinuptimeNullTest>
- <BinuptimeNullTest activeWorker="22">
- <Counter worker="1">19031656</Counter>
- <Counter worker="2">19041556</Counter>
- <Counter worker="3">19002695</Counter>
- <Counter worker="4">19002754</Counter>
- <Counter worker="5">19077008</Counter>
- <Counter worker="6">19078695</Counter>
- <Counter worker="7">18989542</Counter>
- <Counter worker="8">18988653</Counter>
- <Counter worker="9">19044533</Counter>
- <Counter worker="10">19046959</Counter>
- <Counter worker="11">19004288</Counter>
- <Counter worker="12">19003156</Counter>
- <Counter worker="13">19062162</Counter>
- <Counter worker="14">19064009</Counter>
- <Counter worker="15">19034105</Counter>
- <Counter worker="16">19032889</Counter>
- <Counter worker="17">19067368</Counter>
- <Counter worker="18">19070169</Counter>
- <Counter worker="19">19008530</Counter>
- <Counter worker="20">19008397</Counter>
- <Counter worker="21">19037841</Counter>
- <Counter worker="22">19040158</Counter>
- </BinuptimeNullTest>
- <BinuptimeNullTest activeWorker="23">
- <Counter worker="1">19019317</Counter>
- <Counter worker="2">19029201</Counter>
- <Counter worker="3">19010298</Counter>
- <Counter worker="4">19010487</Counter>
- <Counter worker="5">19030794</Counter>
- <Counter worker="6">19032697</Counter>
- <Counter worker="7">19001815</Counter>
- <Counter worker="8">19001431</Counter>
- <Counter worker="9">19067361</Counter>
- <Counter worker="10">19069729</Counter>
- <Counter worker="11">19001399</Counter>
- <Counter worker="12">19000051</Counter>
- <Counter worker="13">19070247</Counter>
- <Counter worker="14">19072221</Counter>
- <Counter worker="15">19020770</Counter>
- <Counter worker="16">19019396</Counter>
- <Counter worker="17">19085756</Counter>
- <Counter worker="18">19088597</Counter>
- <Counter worker="19">19014748</Counter>
- <Counter worker="20">19014660</Counter>
- <Counter worker="21">19044229</Counter>
- <Counter worker="22">19046314</Counter>
- <Counter worker="23">19421247</Counter>
- </BinuptimeNullTest>
- <BinuptimeNullTest activeWorker="24">
- <Counter worker="1">19016838</Counter>
- <Counter worker="2">19026664</Counter>
- <Counter worker="3">18978854</Counter>
- <Counter worker="4">18978559</Counter>
- <Counter worker="5">19034822</Counter>
- <Counter worker="6">19036646</Counter>
- <Counter worker="7">19006174</Counter>
- <Counter worker="8">19005608</Counter>
- <Counter worker="9">19042579</Counter>
- <Counter worker="10">19044966</Counter>
- <Counter worker="11">19007697</Counter>
- <Counter worker="12">19006331</Counter>
- <Counter worker="13">19053232</Counter>
- <Counter worker="14">19054892</Counter>
- <Counter worker="15">18999211</Counter>
- <Counter worker="16">18997906</Counter>
- <Counter worker="17">19065292</Counter>
- <Counter worker="18">19067828</Counter>
- <Counter worker="19">19014259</Counter>
- <Counter worker="20">19013886</Counter>
- <Counter worker="21">19047296</Counter>
- <Counter worker="22">19048410</Counter>
- <Counter worker="23">19017171</Counter>
- <Counter worker="24">19016766</Counter>
- </BinuptimeNullTest>
-</SPTimecounter01>
+*** TEST VERSION: 6.0.0.105c3e541c26113503080c65006ad775d31fca3d
+*** TEST STATE: EXPECTED_PASS
+*** TEST BUILD: RTEMS_SMP
+*** TEST TOOLS: 13.2.0 20230727 (RTEMS 6, RSB d3d738c35a71ca05f675b188539225099401ac79, Newlib a021448)
+*** BEGIN OF JSON DATA ***
+[
+ {
+ "timecounter": "Clock Driver",
+ "counter": [
+ [523086],
+ [523088, 528231],
+ [523088, 528232, 528231],
+ [523088, 528215, 528215, 527992]
+ ]
+ }, {
+ "timecounter": "Null",
+ "counter": [
+ [528630],
+ [528662, 533818],
+ [528684, 533839, 533840],
+ [528664, 533821, 533821, 533582]
+ ]
+ }
+]
+*** END OF JSON DATA ***
+
*** END OF TEST SPTIMECOUNTER 2 ***
+
+cpu 0 in error mode (tt = 0x80)
+ 400337050 00009120: 91d02000 ta 0x0
diff --git a/testsuites/sptests/sptimecounter03/init.c b/testsuites/sptests/sptimecounter03/init.c
index dfcd9a0219..d1a9d58886 100644
--- a/testsuites/sptests/sptimecounter03/init.c
+++ b/testsuites/sptests/sptimecounter03/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (c) 2015 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2015 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -41,7 +41,7 @@ const char rtems_test_name[] = "SPTIMECOUNTER 3";
#define CPU_COUNT 32
-static rtems_test_parallel_context ctx;;
+static rtems_test_parallel_context ctx;
static rtems_interval test_binuptime_init(
rtems_test_parallel_context *ctx,
diff --git a/testsuites/sptests/sptimecounter04/init.c b/testsuites/sptests/sptimecounter04/init.c
index 4d903e75f8..2a8910b980 100644
--- a/testsuites/sptests/sptimecounter04/init.c
+++ b/testsuites/sptests/sptimecounter04/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (c) 2017 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2017 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/sptimerserver01/init.c b/testsuites/sptests/sptimerserver01/init.c
index 1121886bc7..b921806424 100644
--- a/testsuites/sptests/sptimerserver01/init.c
+++ b/testsuites/sptests/sptimerserver01/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (c) 2016 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2016 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/sptls01/init.c b/testsuites/sptests/sptls01/init.c
index 5b5d274d3c..d6beeedf90 100644
--- a/testsuites/sptests/sptls01/init.c
+++ b/testsuites/sptests/sptls01/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (c) 2014 embedded brains GmbH. All rights reserved.
+ * Copyright (C) 2014, 2022 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -29,7 +29,12 @@
#include "config.h"
#endif
-#include <stdio.h>
+#include <rtems/bspIo.h>
+#include <rtems/stackchk.h>
+#include <rtems/sysinit.h>
+#include <rtems/score/cpuimpl.h>
+#include <rtems/score/threadimpl.h>
+#include <rtems/score/tls.h>
#include "tmacros.h"
@@ -45,7 +50,7 @@ static const volatile uint32_t read_only_small = 0x601dc0feUL;
static void check_tls_item(uint32_t expected)
{
- printf("TLS item = %i\n", tls_item);
+ printk("TLS item = %i\n", tls_item);
rtems_test_assert(tls_item == expected);
}
@@ -54,6 +59,7 @@ static void task(rtems_task_argument arg)
rtems_status_code sc;
check_tls_item(123);
+ tls_item = 42;
sc = rtems_event_transient_send(master_task);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
@@ -62,10 +68,47 @@ static void task(rtems_task_argument arg)
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
}
+static void check_tls_size(void)
+{
+ const volatile TLS_Configuration *config;
+ uintptr_t tls_size;
+
+ config = &_TLS_Configuration;
+ tls_size = (uintptr_t) config->size;
+
+ if (tls_size != 1) {
+ printk(
+ "WARNING: The thread-local storage size is %" PRIuPTR ". It should be\n"
+ "exactly one for this test. Check the BSP implementation. The BSP\n"
+ "should not pull in thread-local storage objects such as errno for\n"
+ "this test.\n",
+ tls_size
+ );
+ rtems_test_assert(tls_size == 1);
+ }
+}
+
+static Thread_Control *get_thread(rtems_id id)
+{
+ Thread_Control *the_thread;
+ ISR_lock_Context lock_context;
+
+ the_thread = _Thread_Get(id, &lock_context);
+ _ISR_lock_ISR_enable(&lock_context);
+ return the_thread;
+}
+
static void test(void)
{
rtems_id id;
rtems_status_code sc;
+ Thread_Control *self;
+ Thread_Control *other;
+ char *self_tp;
+ char *other_tp;
+ uintptr_t tls_item_offset;
+ char *self_tls_item;
+ char *other_tls_item;
master_task = rtems_task_self();
@@ -88,28 +131,69 @@ static void test(void)
sc = rtems_task_start(id, task, 0);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+ self = get_thread(master_task);
+ other = get_thread(id);
+ self_tp = _CPU_Get_TLS_thread_pointer(&self->Registers);
+ other_tp = _CPU_Get_TLS_thread_pointer(&other->Registers);
+ tls_item_offset = (uintptr_t) (&tls_item - self_tp);
+ self_tls_item = self_tp + tls_item_offset;
+ other_tls_item = other_tp + tls_item_offset;
+ rtems_test_assert(*self_tls_item == 5);
+ rtems_test_assert(*other_tls_item == 123);
+
sc = rtems_event_transient_receive(RTEMS_WAIT, RTEMS_NO_TIMEOUT);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+ rtems_test_assert(*self_tls_item == 5);
+ rtems_test_assert(*other_tls_item == 42);
+
sc = rtems_task_delete(id);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
check_tls_item(5);
}
-static void Init(rtems_task_argument arg)
+static void test_idle_during_system_init(void)
{
+ rtems_print_printer_printk(&rtems_test_printer);
TEST_BEGIN();
+ check_tls_item(123);
+}
+
+static void Init(rtems_task_argument arg)
+{
test();
+ rtems_test_assert(!rtems_stack_checker_is_blown());
+ check_tls_size();
TEST_END();
rtems_test_exit(0);
}
+RTEMS_SYSINIT_ITEM(
+ test_idle_during_system_init,
+ RTEMS_SYSINIT_IDLE_THREADS,
+ RTEMS_SYSINIT_ORDER_LAST
+);
+
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
-#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
+
+/*
+ * Avoid a dependency on errno which might be a thread-local object. This test
+ * assumes that no thread-local storage object other than tls_item is present.
+ */
+#define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
+
+/*
+ * This test requires full control over the present thread-local objects. In
+ * certain Newlib configurations, the Newlib reentrancy support may add
+ * thread-local objects.
+ */
+#define CONFIGURE_DISABLE_NEWLIB_REENTRANCY
+
+#define CONFIGURE_STACK_CHECKER_ENABLED
#define CONFIGURE_MAXIMUM_TASKS 2
diff --git a/testsuites/sptests/sptls02/init.cc b/testsuites/sptests/sptls02/init.cc
index 712358f978..28ce872d76 100644
--- a/testsuites/sptests/sptls02/init.cc
+++ b/testsuites/sptests/sptls02/init.cc
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (C) 2014, 2020 embedded brains GmbH (http://www.embedded-brains.de)
+ * Copyright (C) 2014, 2020 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -36,6 +36,7 @@
#include <rtems.h>
#include <rtems/libcsupport.h>
+#include <rtems/stackchk.h>
#include <tmacros.h>
@@ -47,7 +48,7 @@ alignas(256) static thread_local long a256 = 256;
static thread_local long i0;
-alignas(512) static thread_local long a512;
+alignas(RTEMS_MINIMUM_STACK_SIZE) static thread_local long a;
int seven()
{
@@ -60,7 +61,7 @@ static void clobber()
i123 = 0xdead0001;
a256 = 0xdead0002;
i0 = 0xdead0003;
- a512 = 0xdead0004;
+ a = 0xdead0004;
}
static long f456(bool clobber)
@@ -168,10 +169,14 @@ static void checkTLSValues()
rtems_test_assert(extern_int == 7);
rtems_test_assert(i123 == 123);
rtems_test_assert(a256 == 256);
- rtems_test_assert((a256 & 255) == 0);
+ uintptr_t addr = reinterpret_cast<uintptr_t>(&a256);
+ RTEMS_OBFUSCATE_VARIABLE(addr);
+ rtems_test_assert((addr % 256) == 0);
rtems_test_assert(i0 == 0);
- rtems_test_assert(a512 == 0);
- rtems_test_assert((a512 & 511) == 0);
+ rtems_test_assert(a == 0);
+ addr = reinterpret_cast<uintptr_t>(&a);
+ RTEMS_OBFUSCATE_VARIABLE(addr);
+ rtems_test_assert((addr % 512) == 0);
rtems_test_assert(f456(false) == 456);
rtems_test_assert(f0(false) == 0);
rtems_test_assert(C::c789() == 789);
@@ -288,6 +293,7 @@ extern "C" void Init(rtems_task_argument arg)
testWorkerTask();
rtems_test_assert(rtems_resource_snapshot_check(&snapshot));
+ rtems_test_assert(!rtems_stack_checker_is_blown());
TEST_END();
@@ -297,6 +303,8 @@ extern "C" void Init(rtems_task_argument arg)
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
+#define CONFIGURE_STACK_CHECKER_ENABLED
+
#define CONFIGURE_MAXIMUM_TASKS 2
#define CONFIGURE_MAXIMUM_SEMAPHORES 3
diff --git a/testsuites/sptests/sptls02/sptls02.h b/testsuites/sptests/sptls02/sptls02.h
index b89750915d..4d9dfd5489 100644
--- a/testsuites/sptests/sptls02/sptls02.h
+++ b/testsuites/sptests/sptls02/sptls02.h
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+ * Copyright (C) 2020 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/sptls02/var.cc b/testsuites/sptests/sptls02/var.cc
index ca885deb62..5f927d043b 100644
--- a/testsuites/sptests/sptls02/var.cc
+++ b/testsuites/sptests/sptls02/var.cc
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+ * Copyright (C) 2020 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/testsuites/sptests/sptls03/init.c b/testsuites/sptests/sptls03/init.c
index 2b60828808..4d564c0f85 100644
--- a/testsuites/sptests/sptls03/init.c
+++ b/testsuites/sptests/sptls03/init.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (c) 2014 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2014 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -29,6 +29,7 @@
#include "config.h"
#endif
+#include <rtems/stackchk.h>
#include <rtems/score/thread.h>
#include "tmacros.h"
@@ -55,6 +56,7 @@ static void Init(rtems_task_argument arg)
test();
+ rtems_test_assert(!rtems_stack_checker_is_blown());
TEST_END();
rtems_test_exit(0);
@@ -68,6 +70,15 @@ static void Init(rtems_task_argument arg)
*/
#define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
+/*
+ * This test requires full control over the present thread-local objects. In
+ * certain Newlib configurations, the Newlib reentrancy support may add
+ * thread-local objects.
+ */
+#define CONFIGURE_DISABLE_NEWLIB_REENTRANCY
+
+#define CONFIGURE_STACK_CHECKER_ENABLED
+
#define CONFIGURE_MAXIMUM_TASKS 1
#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
diff --git a/testsuites/sptests/sptls04/init.c b/testsuites/sptests/sptls04/init.c
index fad919f8ac..bbbe81b9d1 100644
--- a/testsuites/sptests/sptls04/init.c
+++ b/testsuites/sptests/sptls04/init.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2017 embedded brains GmbH & Co. KG
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
@@ -9,7 +9,7 @@
/*
* This test program runs also on GNU/Linux and FreeBSD. Use
*
- * cc init.c && ./a.out
+ * cc init.c tls.c && ./a.out
*
* to run it.
*/
@@ -18,6 +18,8 @@
#include "config.h"
#endif
+#include "sptls04.h"
+
#ifdef __rtems__
#include <tmacros.h>
@@ -30,9 +32,9 @@
#endif /* __rtems__ */
-static __thread int i;
+static _Thread_local int i;
-static __thread int j;
+static _Thread_local int j;
static __attribute__((__constructor__)) void con(void)
{
@@ -43,6 +45,7 @@ static void test(void)
{
rtems_test_assert(i == 1);
rtems_test_assert(j == 0);
+ rtems_test_assert(k == 2);
}
#ifdef __rtems__
diff --git a/testsuites/sptests/sptls04/sptls04.h b/testsuites/sptests/sptls04/sptls04.h
new file mode 100644
index 0000000000..70e7f2a923
--- /dev/null
+++ b/testsuites/sptests/sptls04/sptls04.h
@@ -0,0 +1,41 @@
+/* SPDX-License-Identifier: BSD-2-Clause */
+
+/*
+ * Copyright (C) 2022 embedded brains GmbH & Co. KG
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _SPTLS01_H
+#define _SPTLS01_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern _Thread_local int k;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SPTLS01_H */
diff --git a/testsuites/sptests/sptls04/tls.c b/testsuites/sptests/sptls04/tls.c
new file mode 100644
index 0000000000..ee473bca25
--- /dev/null
+++ b/testsuites/sptests/sptls04/tls.c
@@ -0,0 +1,34 @@
+/* SPDX-License-Identifier: BSD-2-Clause */
+
+/*
+ * Copyright (C) 2022 embedded brains GmbH & Co. KG
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "sptls04.h"
+
+_Thread_local int k = 2;
diff --git a/testsuites/sptests/spunlimited01/init.c b/testsuites/sptests/spunlimited01/init.c
new file mode 100644
index 0000000000..dc0496d441
--- /dev/null
+++ b/testsuites/sptests/spunlimited01/init.c
@@ -0,0 +1,125 @@
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ *
+ * Copyright (C) 2022 embedded brains GmbH & Co. KG
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <rtems.h>
+#include <rtems/score/heapimpl.h>
+
+#include <string.h>
+
+#include <rtems/test.h>
+#include <rtems/test-info.h>
+
+const char rtems_test_name[] = "SPUNLIMITED 1";
+
+void __real__Workspace_Free( void * );
+void __wrap__Workspace_Free( void * );
+
+void __wrap__Workspace_Free( void *ptr )
+{
+ uintptr_t alloc_begin;
+ uintptr_t block_size;
+ uintptr_t block_end;
+ Heap_Block *block;
+
+ if ( ptr == NULL ) {
+ return;
+ }
+
+ alloc_begin = (uintptr_t) ptr;
+ block = _Heap_Block_of_alloc_area( alloc_begin, CPU_HEAP_ALIGNMENT );
+ block_size = _Heap_Block_size( block );
+ block_end = (uintptr_t) block + block_size;
+ memset( ptr, 0, block_end - alloc_begin );
+
+ __real__Workspace_Free( ptr );
+}
+
+static void delete_mutex( rtems_id id )
+{
+ rtems_status_code sc;
+
+ sc = rtems_semaphore_delete( id );
+ T_rsc_success( sc );
+}
+
+T_TEST_CASE( UnlimitedShrink )
+{
+ rtems_id ids[ 6 ];
+ size_t i;
+ rtems_status_code sc;
+
+ for ( i = 0; i < RTEMS_ARRAY_SIZE( ids ); ++i ) {
+ sc = rtems_semaphore_create(
+ rtems_build_name( 'M', 'U', 'T', 'X' ),
+ 1,
+ RTEMS_BINARY_SEMAPHORE,
+ 0,
+ &ids[ i ]
+ );
+ T_assert_rsc_success( sc );
+ }
+
+ sc = rtems_semaphore_obtain( ids[ 2 ], RTEMS_WAIT, RTEMS_NO_TIMEOUT );
+ T_rsc_success( sc );
+
+ delete_mutex( ids[ 5 ] );
+ delete_mutex( ids[ 4 ] );
+ delete_mutex( ids[ 3 ] );
+
+ sc = rtems_semaphore_release( ids[ 2 ] );
+ T_rsc_success( sc );
+
+ delete_mutex( ids[ 2 ] );
+ delete_mutex( ids[ 1 ] );
+ delete_mutex( ids[ 0 ] );
+}
+
+static rtems_task Init( rtems_task_argument argument )
+{
+ rtems_test_run( argument, TEST_STATE );
+}
+
+#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
+#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
+
+#define CONFIGURE_MAXIMUM_TASKS 1
+
+#define CONFIGURE_MAXIMUM_SEMAPHORES rtems_resource_unlimited( 2 )
+
+#define CONFIGURE_UNIFIED_WORK_AREAS
+
+#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
+
+#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+#define CONFIGURE_INIT
+
+#include <rtems/confdefs.h>
diff --git a/testsuites/sptests/spunlimited01/spunlimited01.doc b/testsuites/sptests/spunlimited01/spunlimited01.doc
new file mode 100644
index 0000000000..43d3ec1646
--- /dev/null
+++ b/testsuites/sptests/spunlimited01/spunlimited01.doc
@@ -0,0 +1,14 @@
+This file describes the directives and concepts tested by this test set.
+
+test set name: spunlimited01
+
+directives:
+
+ - _Objects_Activate_unlimited()
+ - _Objects_Free_unlimited()
+
+concepts:
+
+ - Create and delete objects with the unlimited objects support in a certain
+ order. Ensure that only blocks with free objects are reclaimed during a
+ shrink operation.