summaryrefslogtreecommitdiffstats
path: root/spec/rtems/task/req/ident.yml
blob: 2769cea7611b244736ef12d4e075d33a8a875be8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
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: |
    static char task_storage[ RTEMS_MINIMUM_STACK_SIZE ];
    static const rtems_task_config task_config = {
      .name = ClassicObjectIdentName,
      .initial_priority = 1,
      .storage_area = task_storage,
      .storage_size = sizeof( task_storage ),
      .initial_modes = RTEMS_DEFAULT_MODES,
      .attributes = RTEMS_DEFAULT_ATTRIBUTES
    };
    rtems_status_code sc;

    sc = rtems_task_build( &task_config, &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 );
  }
test-target: testsuites/validation/tc-task-ident.c
test-teardown: 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