summaryrefslogblamecommitdiffstats
path: root/spec/rtems/task/req/ident.yml
blob: 54661205f8b3dd73eec6c829239ebf1dab2be1bd (plain) (tree)
1
2
3
4
5
6
7
8






                                                                         
                           













                                                                               
                                                              
           
                                                                      













                                             
                                                                   
           
                                                                     

                     

               
                            
                



                                                                      
                                 




                            
                  












                                  
                          



                      
                   
                  


             

                         



                              











                                                  





















                                                                         
                                                  









                                                     
                        












                     
                 
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