summaryrefslogtreecommitdiffstats
path: root/spec/rtems/task/req/is-suspended.yml
blob: 34fbce8b5e790491eb8422ad82ac5d1009140e0a (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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
copyrights:
- Copyright (C) 2021 embedded brains GmbH & Co. KG
enabled-by: true
functional-type: action
links:
- role: interface-function
  uid: ../if/is-suspended
post-conditions:
- name: Status
  states:
  - name: Ok
    test-code: |
      T_rsc_success( ctx->status );
    text: |
      The return status of ${../if/is-suspended:/name} shall be
      ${../../status/if/successful:/name}.
  - name: InvId
    test-code: |
      T_rsc( ctx->status, RTEMS_INVALID_ID );
    text: |
      The return status of ${../if/is-suspended:/name} shall be
      ${../../status/if/invalid-id:/name}.
  - name: AlrdySus
    test-code: |
      T_rsc( ctx->status, RTEMS_ALREADY_SUSPENDED );
    text: |
      The return status of ${../if/is-suspended:/name} shall be
      ${../../status/if/already-suspended:/name}.
  test-epilogue: null
  test-prologue: null
pre-conditions:
- name: Id
  states:
  - name: Invalid
    test-code: |
      ctx->id = INVALID_ID;
    text: |
      While the ${../if/is-suspended:/params[0]/name} parameter is not
      associated with a task.
  - name: Task
    test-code: |
      ctx->id = ctx->worker_id;
    text: |
      While the ${../if/is-suspended:/params[0]/name} parameter is
      associated with a task.
  test-epilogue: null
  test-prologue: null
- name: Suspended
  states:
  - name: 'Yes'
    test-code: |
      ctx->suspend = true;
    text: |
      While the task specified by the ${../if/is-suspended:/params[0]/name}
      parameter is suspended.
  - name: 'No'
    test-code: |
      ctx->suspend = false;
    text: |
      While the task specified by the ${../if/is-suspended:/params[0]/name}
      parameter is not suspended.
  test-epilogue: null
  test-prologue: null
rationale: null
references: []
requirement-type: functional
skip-reasons: {}
test-action: |
  if ( ctx->suspend ) {
    SuspendTask( ctx->worker_id );
  }

  ctx->status = rtems_task_is_suspended( ctx->id );

  if ( ctx->suspend ) {
    ResumeTask( ctx->worker_id );
  }
test-brief: null
test-cleanup: null
test-context:
- brief: |
    This member contains the identifier of a task.
  description: null
  member: |
    rtems_id worker_id
- brief: |
    If this member is true, then the worker is suspended before the
    ${../if/is-suspended:/name} call.
  description: null
  member: |
    bool suspend
- brief: |
    This member contains the return value of the ${../if/is-suspended:/name}
    call.
  description: null
  member: |
    rtems_status_code status
- brief: |
    This member specifies if the ${../if/is-suspended:/params[0]/name}
    parameter value.
  description: null
  member: |
    rtems_id id
test-context-support: null
test-description: null
test-header: null
test-includes:
- rtems.h
test-local-includes:
- tx-support.h
test-prepare: null
test-setup:
  brief: null
  code: |
    ctx->worker_id = CreateTask( "WORK", PRIO_LOW );
    StartTask( ctx->worker_id, Worker, ctx );
  description: null
test-stop: null
test-support: |
  static void Worker( rtems_task_argument arg )
  {
    while ( true ) {
      /* Do nothing */
    }
  }
test-target: testsuites/validation/tc-task-is-suspended.c
test-teardown:
  brief: null
  code: |
    DeleteTask( ctx->worker_id );
  description: null
text: ${.:text-template}
transition-map:
- enabled-by: true
  post-conditions:
    Status: Ok
  pre-conditions:
    Id:
    - Task
    Suspended:
    - 'No'
- enabled-by: true
  post-conditions:
    Status: AlrdySus
  pre-conditions:
    Id:
    - Task
    Suspended:
    - 'Yes'
- enabled-by: true
  post-conditions:
    Status: InvId
  pre-conditions:
    Id:
    - Invalid
    Suspended: N/A
type: requirement