summaryrefslogtreecommitdiffstats
path: root/testsuites
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2021-03-27 11:15:43 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2021-03-27 18:05:05 +0100
commite0aba8cb9edd3630be3b81e1f1c3e8bdaf728d1e (patch)
treef2d7d3f04eb1b6cadb8047323a6e319fd8a1a01c /testsuites
parentd4d2f6487ac4db85746ee208c6f7a23105ed5444 (diff)
downloadrtems-e0aba8cb9edd3630be3b81e1f1c3e8bdaf728d1e.tar.bz2
score: Fix task stack initialization
Do not adjust the stack area begin address since this may confuse the stack allocator and result in failed stack frees. Account for the alignment overhead in the stack space size estimate. Check that the stack size is in the expected interval.
Diffstat (limited to 'testsuites')
-rw-r--r--testsuites/psxtests/psxclassic01/init.c6
-rw-r--r--testsuites/psxtests/psxconfig01/init.c6
-rw-r--r--testsuites/sptests/spconfig01/init.c6
-rw-r--r--testsuites/validation/ts-default.h3
4 files changed, 17 insertions, 4 deletions
diff --git a/testsuites/psxtests/psxclassic01/init.c b/testsuites/psxtests/psxclassic01/init.c
index 42ddf10bec..04a77b1c30 100644
--- a/testsuites/psxtests/psxclassic01/init.c
+++ b/testsuites/psxtests/psxclassic01/init.c
@@ -78,7 +78,11 @@ static rtems_task test_task(rtems_task_argument arg)
sc = pthread_attr_getstack( &attr, &addr, &size );
rtems_test_assert( sc == 0 );
rtems_test_assert( addr != NULL );
- rtems_test_assert( size == RTEMS_MINIMUM_STACK_SIZE );
+ rtems_test_assert( size >= RTEMS_MINIMUM_STACK_SIZE );
+ rtems_test_assert(
+ size <= RTEMS_MINIMUM_STACK_SIZE + CPU_STACK_ALIGNMENT -
+ CPU_HEAP_ALIGNMENT
+ );
value = -1;
sc = pthread_attr_getscope( &attr, &value );
diff --git a/testsuites/psxtests/psxconfig01/init.c b/testsuites/psxtests/psxconfig01/init.c
index 6d7a227793..96bd4d8b3d 100644
--- a/testsuites/psxtests/psxconfig01/init.c
+++ b/testsuites/psxtests/psxconfig01/init.c
@@ -480,7 +480,11 @@ static rtems_task Init(rtems_task_argument argument)
eno = pthread_attr_getstacksize(&attr, &stack_size);
rtems_test_assert(eno == 0);
- rtems_test_assert(stack_size == CPU_STACK_MINIMUM_SIZE);
+ rtems_test_assert(stack_size >= CPU_STACK_MINIMUM_SIZE);
+ rtems_test_assert(
+ stack_size <= CPU_STACK_MINIMUM_SIZE + CPU_STACK_ALIGNMENT -
+ CPU_HEAP_ALIGNMENT
+ );
eno = pthread_attr_destroy(&attr);
rtems_test_assert(eno == 0);
diff --git a/testsuites/sptests/spconfig01/init.c b/testsuites/sptests/spconfig01/init.c
index 7b13d69122..2d1b5d4145 100644
--- a/testsuites/sptests/spconfig01/init.c
+++ b/testsuites/sptests/spconfig01/init.c
@@ -101,7 +101,11 @@ static void test_stack_config(void)
eno = pthread_attr_getstacksize(&attr, &stack_size);
rtems_test_assert(eno == 0);
- rtems_test_assert(stack_size == 2 * CPU_STACK_MINIMUM_SIZE);
+ rtems_test_assert(stack_size >= 2 * CPU_STACK_MINIMUM_SIZE);
+ rtems_test_assert(
+ stack_size <= 2 * CPU_STACK_MINIMUM_SIZE + CPU_STACK_ALIGNMENT -
+ CPU_HEAP_ALIGNMENT
+ );
eno = pthread_attr_destroy(&attr);
rtems_test_assert(eno == 0);
diff --git a/testsuites/validation/ts-default.h b/testsuites/validation/ts-default.h
index e8e2334825..d519df09ff 100644
--- a/testsuites/validation/ts-default.h
+++ b/testsuites/validation/ts-default.h
@@ -48,7 +48,8 @@
#define TASK_STORAGE_SIZE \
RTEMS_TASK_STORAGE_SIZE( \
- MAX_TLS_SIZE + RTEMS_MINIMUM_STACK_SIZE, \
+ MAX_TLS_SIZE + RTEMS_MINIMUM_STACK_SIZE + \
+ CPU_STACK_ALIGNMENT - CPU_HEAP_ALIGNMENT, \
TASK_ATTRIBUTES \
)