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: /rtems/task/if/ident post-conditions: - name: Post states: - name: OkAndSelfId test-code: | T_rsc(ctx->status, RTEMS_SUCCESSFUL); T_eq_ptr(ctx->id, &ctx->id_value); T_eq_u32(ctx->id_value, rtems_task_self()); text: | The status shall be RTEMS_SUCCESSFUL. The value of the object identifier referenced by the id parameter shall be the identifier of the executing thread. - name: Generic test-code: | /* Checks performed by ${../../req/ident:/test-run}() */ text: | The post-condition status shall be specified by ${../req/ident}. test-epilogue: null test-prologue: null pre-conditions: - name: Pre states: - name: Self test-code: | ctx->id_value = 0xffffffff; ctx->id = &ctx->id_value; text: | The name parameter shall be RTEMS_SELF. - name: Generic test-code: | ctx->id = NULL; /* Preparation performed by ${../../req/ident:/test-run}() */ text: | The pre-condition status shall be specified by ${../req/ident}. test-epilogue: null test-prologue: null rationale: null references: [] requirement-type: functional skip-reasons: {} test-action: | if ( ctx->id != NULL ) { ctx->status = rtems_task_ident( RTEMS_SELF, 0xdeadbeef, ctx->id ); } else { ${../../req/ident:/test-run}( ctx->id_local_object, ClassicTaskIdentAction ); } test-brief: null test-cleanup: null test-context: - brief: null description: null member: rtems_status_code status - brief: null description: null member: rtems_id *id - brief: null description: null member: rtems_id id_value - brief: null description: null member: rtems_id id_local_object test-context-support: null test-description: null test-header: null test-includes: [] test-local-includes: - tr-object-ident.h test-prepare: null test-setup: brief: null code: | rtems_status_code sc; sc = rtems_task_construct( &ClassicTaskIdentConfig, &ctx->id_local_object ); T_assert_rsc_success( sc ); description: null test-stop: null test-support: | static rtems_status_code ClassicTaskIdentAction( rtems_name name, uint32_t node, rtems_id *id ) { return rtems_task_ident( name, node, id ); } #define TASK_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES #define MAX_TLS_SIZE RTEMS_ALIGN_UP( 64, RTEMS_TASK_STORAGE_ALIGNMENT ) RTEMS_ALIGNED( RTEMS_TASK_STORAGE_ALIGNMENT ) static char ClassicTaskIdentStorage[ RTEMS_TASK_STORAGE_SIZE( MAX_TLS_SIZE + RTEMS_MINIMUM_STACK_SIZE, TASK_ATTRIBUTES ) ]; static const rtems_task_config ClassicTaskIdentConfig = { .name = ClassicObjectIdentName, .initial_priority = 1, .storage_area = ClassicTaskIdentStorage, .storage_size = sizeof( ClassicTaskIdentStorage ), .maximum_thread_local_storage_size = MAX_TLS_SIZE, .initial_modes = RTEMS_DEFAULT_MODES, .attributes = TASK_ATTRIBUTES }; test-target: testsuites/validation/tc-task-ident.c test-teardown: brief: null code: | if ( ctx->id_local_object != 0 ) { rtems_status_code sc; sc = rtems_task_delete( ctx->id_local_object ); T_rsc_success( sc ); } description: null text: ${.:text-template} transition-map: - enabled-by: true post-conditions: Post: OkAndSelfId pre-conditions: Pre: - Self - enabled-by: true post-conditions: Post: Generic pre-conditions: Pre: - Generic type: requirement