blob: 94ec9858e98e561745abab8e87764b22e0dc45b8 (
plain) (
tree)
|
|
SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
copyrights:
- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
enabled-by: true
functional-type: action
links:
- role: interface-function
uid: ../if/obtain
post-conditions:
- name: Action
states:
- name: InvId
test-code: |
sc = rtems_semaphore_obtain( 0xffffffff, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
T_rsc( sc, RTEMS_INVALID_ID );
text: |
The return status of ${../if/obtain:/name} shall be
${../../status/if/invalid-id:/name}.
- name: SemSeizeTry
test-code: |
${/score/sem/req/seize-try:/test-run}(
&ctx->tq_ctx,
TQClassicSemGetCount,
TQClassicSemSetCount
);
text: |
The calling task shall try to seize the semaphore as specified by
${/score/sem/req/seize-try}.
test-epilogue: null
test-prologue: |
rtems_status_code sc;
pre-conditions:
- name: Class
states:
- name: Counting
test-code: |
ctx->attribute_set |= RTEMS_COUNTING_SEMAPHORE;
text: |
While the semaphore object is a counting semaphore.
- name: Simple
test-code: |
ctx->attribute_set |= RTEMS_SIMPLE_BINARY_SEMAPHORE;
text: |
While the semaphore object is a simple binary semaphore.
test-epilogue: null
test-prologue: null
- name: Discipline
states:
- name: FIFO
test-code: |
ctx->attribute_set |= RTEMS_FIFO;
text: |
While the semaphore uses the FIFO task wait queue discipline.
- name: Priority
test-code: |
ctx->attribute_set |= RTEMS_PRIORITY;
text: |
While the semaphore uses the priority task wait queue discipline.
test-epilogue: null
test-prologue: null
- name: Id
states:
- name: Valid
test-code: |
/* Nothing to prepare */
text: |
While the ${../if/obtain:/params[0]/name} parameter is associated with
the semaphore.
- name: Invalid
test-code: |
/* Nothing to prepare */
text: |
While the ${../if/obtain:/params[0]/name} parameter is not associated
with a semaphore.
test-epilogue: null
test-prologue: null
rationale: null
references: []
requirement-type: functional
skip-reasons: {}
test-action: |
rtems_status_code sc;
sc = rtems_semaphore_create(
NAME,
1,
ctx->attribute_set,
PRIO_ULTRA_HIGH,
&ctx->tq_ctx.thread_queue_id
);
T_rsc_success( sc );
test-brief: null
test-cleanup:
rtems_status_code sc;
sc = rtems_semaphore_delete( ctx->tq_ctx.thread_queue_id );
T_rsc_success( sc );
test-context:
- brief: |
This member contains the thread queue test context.
description: null
member: |
TQContext tq_ctx
- brief: |
This member specifies if the attribute set of the semaphore.
description: null
member: |
rtems_attribute attribute_set
test-context-support: null
test-description: null
test-header: null
test-includes:
- rtems.h
- string.h
test-local-includes:
- tc-support.h
- tr-sem-seize-try.h
- tx-thread-queue.h
test-prepare: null
test-setup:
brief: null
code: |
memset( ctx, 0, sizeof( *ctx ) );
ctx->tq_ctx.enqueue = TQClassicSemEnqueue;
ctx->tq_ctx.dequeue_one = TQClassicSemDequeue;
ctx->tq_ctx.dequeue_all = TQClassicSemDequeue;
ctx->tq_ctx.convert_status = TQClassicConvertStatus;
TQInitialize( &ctx->tq_ctx );
description: null
test-stop: null
test-support: |
#define NAME rtems_build_name( 'T', 'E', 'S', 'T' )
typedef RtemsSemReqObtain_Context Context;
test-target: testsuites/validation/tc-sem-obtain.c
test-teardown:
brief: null
code: |
TQDestory( &ctx->tq_ctx );
description: null
text: ${.:text-template}
transition-map:
- enabled-by: true
post-conditions:
Action: InvId
pre-conditions:
Class: all
Discipline: all
Id:
- Invalid
- enabled-by: true
post-conditions:
Action: SemSeizeTry
pre-conditions:
Class: all
Discipline: all
Id:
- Valid
type: requirement
|