summaryrefslogtreecommitdiffstats
path: root/spec/req/rtems/tasks/construct-errors.yml
diff options
context:
space:
mode:
Diffstat (limited to 'spec/req/rtems/tasks/construct-errors.yml')
-rw-r--r--spec/req/rtems/tasks/construct-errors.yml499
1 files changed, 0 insertions, 499 deletions
diff --git a/spec/req/rtems/tasks/construct-errors.yml b/spec/req/rtems/tasks/construct-errors.yml
deleted file mode 100644
index 2e24ac94..00000000
--- a/spec/req/rtems/tasks/construct-errors.yml
+++ /dev/null
@@ -1,499 +0,0 @@
-SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-copyrights:
-- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-enabled-by: true
-functional-type: action
-links:
-- role: interface-function
- uid: /if/rtems/tasks/construct
-post-conditions:
-- name: Status
- states:
- - name: Ok
- test-code: |
- T_rsc_success( ctx->status );
- T_eq_ptr( ctx->id, &ctx->id_value );
- T_ne_u32( ctx->id_value, 0xffffffff );
-
- sc = rtems_task_delete( ctx->id_value );
- T_rsc_success( sc );
- text: |
- The status shall be RTEMS_SUCCESSFUL. The value of the object identifier
- referenced by the id parameter shall identify the constructed task.
- - name: InvAddress
- test-code: |
- T_rsc( ctx->status, RTEMS_INVALID_ADDRESS );
- T_null( ctx->id );
- T_eq_u32( ctx->id_value, 0xffffffff );
- text: |
- The status shall be RTEMS_INVALID_ADDRESS.
- - name: InvName
- test-code: |
- T_rsc( ctx->status, RTEMS_INVALID_NAME );
- T_eq_u32( ctx->id_value, 0xffffffff );
- text: |
- The status shall be RTEMS_INVALID_NAME. If the id parameter is not NULL,
- then the value of the object identifier referenced by the id parameter
- shall be unchanged.
- - name: InvPrio
- test-code: |
- T_rsc( ctx->status, RTEMS_INVALID_PRIORITY );
- T_eq_u32( ctx->id_value, 0xffffffff );
- text: |
- The status shall be RTEMS_INVALID_PRIORITY. If the id parameter is not
- NULL, then the value of the object identifier referenced by the id
- parameter shall be unchanged.
- - name: InvSize
- test-code: |
- T_rsc( ctx->status, RTEMS_INVALID_SIZE );
- T_eq_u32( ctx->id_value, 0xffffffff );
- text: |
- The status shall be RTEMS_INVALID_SIZE. If the id parameter is not NULL,
- then the value of the object identifier referenced by the id parameter
- shall be unchanged.
- - name: TooMany
- test-code: |
- T_rsc( ctx->status, RTEMS_TOO_MANY );
- T_eq_u32( ctx->id_value, 0xffffffff );
- text: |
- The status shall be RTEMS_TOO_MANY. If the id parameter is not NULL,
- then the value of the object identifier referenced by the id parameter
- shall be unchanged.
- - name: Unsatisfied
- test-code: |
- T_rsc( ctx->status, RTEMS_UNSATISFIED );
- T_eq_u32( ctx->id_value, 0xffffffff );
- text: |
- The status shall be RTEMS_UNSATISFIED. If the id parameter is not NULL,
- then the value of the object identifier referenced by the id parameter
- shall be unchanged.
- test-epilogue: null
- test-prologue: |
- rtems_status_code sc;
-pre-conditions:
-- name: Id
- states:
- - name: Id
- test-code: |
- ctx->id = &ctx->id_value;
- text: |
- The id parameter shall reference an object identifier value.
- - name: 'Null'
- test-code: |
- ctx->id = NULL;
- text: |
- The id parameter shall be NULL.
- test-epilogue: null
- test-prologue: null
-- name: Name
- states:
- - name: Valid
- test-code: |
- ctx->config.name = rtems_build_name( 'N', 'A', 'M', 'E' );
- text: |
- The name of the task configuration shall be valid.
- - name: Inv
- test-code: |
- ctx->config.name = 0;
- text: |
- The name of the task configuration shall be invalid.
- test-epilogue: null
- test-prologue: null
-- name: Prio
- states:
- - name: Valid
- test-code: |
- ctx->config.initial_priority = 254;
- text: |
- The initial priority of the task configuration shall be valid.
- - name: Zero
- test-code: |
- ctx->config.initial_priority = 0;
- text: |
- The initial priority of the task configuration shall be zero.
- - name: Inv
- test-code: |
- ctx->config.initial_priority = 0xffffffff;
- text: |
- The initial priority of the task configuration shall be invalid.
- test-epilogue: null
- test-prologue: null
-- name: Tasks
- states:
- - name: Avail
- test-code: |
- /* Nothing to do */
- text: |
- There shall be at least one inactive task object available.
- - name: None
- test-code: |
- create_extension_status = ctx->create_extension_status;
- ctx->create_extension_status = true;
-
- while ( true ) {
- rtems_status_code sc;
- rtems_id id;
-
- sc = rtems_task_construct( &valid_task_config, &id );
-
- if ( sc == RTEMS_SUCCESSFUL ) {
- Objects_Control *obj;
- const Objects_Information *info;
-
- info = _Objects_Get_information_id( id );
- T_quiet_assert_not_null( info );
- obj = _Objects_Get_no_protection( id, info );
- T_quiet_assert_not_null( obj );
- _Chain_Append_unprotected( &ctx->tasks, &obj->Node );
- } else {
- T_quiet_rsc( sc, RTEMS_TOO_MANY );
- break;
- }
- }
-
- ctx->create_extension_status = create_extension_status;
- text: |
- There shall be no inactive task object available.
- test-epilogue: null
- test-prologue: |
- bool create_extension_status;
-- name: TLS
- states:
- - name: Enough
- test-code: |
- ctx->config.maximum_thread_local_storage_size = MAX_TLS_SIZE;
- text: |
- The maximum thread-local storage size of the task configuration shall be
- greater than or equal to the thread-local storage size.
- - name: Small
- test-code: |
- ctx->config.maximum_thread_local_storage_size = 0;
- text: |
- The maximum thread-local storage size of the task configuration shall be
- less than the thread-local storage size.
- test-epilogue: null
- test-prologue: null
-- name: Stack
- states:
- - name: Enough
- test-code: |
- ctx->stack_size = RTEMS_MINIMUM_STACK_SIZE;
- text: |
- The task stack size of the task configuration shall be greater than or
- equal to the configured minimum size.
- - name: Small
- test-code: |
- ctx->stack_size = 0;
- text: |
- The task stack size of the task configuration shall be less than to the
- configured minimum size.
- test-epilogue: null
- test-prologue: null
-- name: Ext
- states:
- - name: Ok
- test-code: |
- ctx->create_extension_status = true;
- text: |
- None of the task create extensions shall fail.
- - name: Err
- test-code: |
- ctx->create_extension_status = false;
- text: |
- At least one of the task create extensions shall fail.
- test-epilogue: null
- test-prologue: null
-- name: Preempt
- states:
- - name: 'Yes'
- test-code: |
- ctx->config.initial_modes &= ~RTEMS_PREEMPT_MASK;
- ctx->config.initial_modes |= RTEMS_PREEMPT;
- text: |
- The preemptible mode in the initial modes of the task configuration shall
- be set to preemptible.
- - name: 'No'
- test-code: |
- ctx->config.initial_modes &= ~RTEMS_PREEMPT_MASK;
- ctx->config.initial_modes |= RTEMS_NO_PREEMPT;
- text: |
- The preemptible mode in the initial modes of the task configuration shall
- be set to non-preemptible.
- test-epilogue: null
- test-prologue: null
-rationale: null
-references: []
-requirement-type: functional
-skip-reasons: {}
-test-action: |
- ctx->config.storage_size = RTEMS_TASK_STORAGE_SIZE(
- ctx->config.maximum_thread_local_storage_size + ctx->stack_size,
- ctx->config.attributes
- );
- ctx->status = rtems_task_construct( &ctx->config, ctx->id );
-test-brief: null
-test-cleanup: |
- Chain_Node *node;
-
- while ( ( node = _Chain_Get_unprotected( &ctx->tasks ) ) ) {
- Objects_Control *obj;
- rtems_status_code sc;
-
- obj = (Objects_Control *) node;
- sc = rtems_task_delete( obj->id );
- T_quiet_rsc_success( sc );
- }
-test-context:
-- brief: null
- description: null
- member: rtems_status_code status
-- brief: null
- description: null
- member: rtems_task_config config
-- brief: null
- description: null
- member: rtems_id *id
-- brief: null
- description: null
- member: rtems_id id_value
-- brief: null
- description: null
- member: bool create_extension_status
-- brief: null
- description: null
- member: size_t stack_size
-- brief: null
- description: null
- member: rtems_id extension_id
-- brief: null
- description: null
- member: Chain_Control tasks
-test-context-support: null
-test-description: null
-test-header: null
-test-includes:
-- rtems.h
-- rtems/score/chainimpl.h
-- rtems/score/objectimpl.h
-- string.h
-test-local-includes: []
-test-prepare: |
- ctx->id_value = 0xffffffff;
- memset( &ctx->config, 0, sizeof( ctx->config ) );
-test-setup:
- brief: null
- code: |
- rtems_status_code sc;
- int var;
-
- var = tls_variable;
- RTEMS_OBFUSCATE_VARIABLE( var );
- tls_variable = var;
-
- sc = rtems_extension_create(
- rtems_build_name( 'T', 'C', 'F', 'C' ),
- &extensions,
- &ctx->extension_id
- );
- T_rsc_success( sc );
-
- _Chain_Initialize_empty( &ctx->tasks );
- description: null
-test-stop: null
-test-support: |
- static _Thread_local int tls_variable;
-
- #define MAX_TLS_SIZE RTEMS_ALIGN_UP( 128, RTEMS_TASK_STORAGE_ALIGNMENT )
-
- RTEMS_ALIGNED( RTEMS_TASK_STORAGE_ALIGNMENT ) static char task_storage[
- RTEMS_TASK_STORAGE_SIZE(
- MAX_TLS_SIZE + RTEMS_MINIMUM_STACK_SIZE,
- RTEMS_FLOATING_POINT
- )
- ];
-
- static const rtems_task_config valid_task_config = {
- .name = rtems_build_name( 'T', 'A', 'S', 'K' ),
- .initial_priority = 1,
- .storage_area = task_storage,
- .storage_size = sizeof( task_storage ),
- .maximum_thread_local_storage_size = MAX_TLS_SIZE,
- .initial_modes = RTEMS_DEFAULT_MODES,
- .attributes = RTEMS_DEFAULT_MODES
- };
-
- static bool ThreadCreate( rtems_tcb *executing, rtems_tcb *created )
- {
- (void) executing;
- (void) created;
-
- return ReqRtemsTasksConstructErrors_Instance.create_extension_status;
- }
-
- static const rtems_extensions_table extensions = {
- .thread_create = ThreadCreate
- };
-test-target: testsuites/validation/tc-task-construct-errors.c
-test-teardown:
- brief: null
- code: |
- rtems_status_code sc;
-
- sc = rtems_extension_delete( ctx->extension_id );
- T_rsc_success( sc );
- description: null
-text: ${.:text-template}
-transition-map:
-- enabled-by: true
- post-conditions:
- Status: Ok
- pre-conditions:
- Id:
- - Id
- Name:
- - Valid
- Prio:
- - Valid
- Tasks:
- - Avail
- TLS:
- - Enough
- Stack:
- - Enough
- Ext:
- - Ok
- Preempt: all
-- enabled-by: true
- post-conditions:
- Status: InvAddress
- pre-conditions:
- Id:
- - 'Null'
- Name: all
- Prio: all
- Tasks: all
- TLS: all
- Stack: all
- Ext: all
- Preempt: all
-- enabled-by: true
- post-conditions:
- Status: InvName
- pre-conditions:
- Id:
- - Id
- Name:
- - Inv
- Prio: all
- Tasks: all
- TLS: all
- Stack: all
- Ext: all
- Preempt: all
-- enabled-by: true
- post-conditions:
- Status: InvPrio
- pre-conditions:
- Id:
- - Id
- Name:
- - Valid
- Prio:
- - Zero
- - Inv
- Tasks: all
- TLS: all
- Stack: all
- Ext: all
- Preempt: all
-- enabled-by: true
- post-conditions:
- Status: TooMany
- pre-conditions:
- Id:
- - Id
- Name:
- - Valid
- Prio:
- - Valid
- Tasks:
- - None
- TLS: all
- Stack: all
- Ext: all
- Preempt: all
-- enabled-by: true
- post-conditions:
- Status: InvSize
- pre-conditions:
- Id:
- - Id
- Name:
- - Valid
- Prio:
- - Valid
- Tasks:
- - Avail
- TLS:
- - Small
- Stack: all
- Ext: all
- Preempt: all
-- enabled-by: true
- post-conditions:
- Status: InvSize
- pre-conditions:
- Id:
- - Id
- Name:
- - Valid
- Prio:
- - Valid
- Tasks:
- - Avail
- TLS:
- - Enough
- Stack:
- - Small
- Ext: all
- Preempt: all
-- enabled-by: true
- post-conditions:
- Status: Unsatisfied
- pre-conditions:
- Id:
- - Id
- Name:
- - Valid
- Prio:
- - Valid
- Tasks:
- - Avail
- TLS:
- - Enough
- Stack:
- - Enough
- Ext:
- - Err
- Preempt: all
-- enabled-by: RTEMS_SMP
- post-conditions:
- Status: Unsatisfied
- pre-conditions:
- Id:
- - Id
- Name:
- - Valid
- Prio:
- - Valid
- Tasks:
- - Avail
- TLS:
- - Enough
- Stack:
- - Enough
- Ext:
- - Ok
- Preempt:
- - 'No'
-type: requirement