summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--spec/rtems/barrier/req/create.yml32
-rw-r--r--spec/rtems/barrier/req/delete.yml56
-rw-r--r--spec/rtems/barrier/req/release.yml73
-rw-r--r--spec/rtems/barrier/req/wait.yml101
-rw-r--r--spec/rtems/event/req/send-receive.yml76
-rw-r--r--spec/rtems/signal/req/catch.yml31
-rw-r--r--spec/rtems/signal/req/send.yml83
-rw-r--r--spec/rtems/task/req/mode.yml88
8 files changed, 94 insertions, 446 deletions
diff --git a/spec/rtems/barrier/req/create.yml b/spec/rtems/barrier/req/create.yml
index 815f1eb1..6fb6cf3c 100644
--- a/spec/rtems/barrier/req/create.yml
+++ b/spec/rtems/barrier/req/create.yml
@@ -256,28 +256,16 @@ test-header: null
test-includes:
- rtems.h
- string.h
-test-local-includes: []
+test-local-includes:
+- tc-support.h
test-prepare: null
test-setup:
brief: null
code: |
- rtems_status_code sc;
-
memset( ctx, 0, sizeof( *ctx ) );
ctx->id_value = INVALID_ID;
-
- sc = rtems_task_create(
- rtems_build_name( 'W', 'O', 'R', 'K' ),
- PRIO_LOW,
- RTEMS_MINIMUM_STACK_SIZE,
- RTEMS_DEFAULT_MODES,
- RTEMS_DEFAULT_ATTRIBUTES,
- &ctx->worker_id
- );
- T_assert_rsc_success( sc );
-
- sc = rtems_task_start( ctx->worker_id, Worker, (rtems_task_argument) ctx );
- T_assert_rsc_success( sc );
+ ctx->worker_id = CreateTask( "WORK", PRIO_LOW );
+ StartTask( ctx->worker_id, Worker, ctx );
description: null
test-stop: null
test-support: |
@@ -287,11 +275,6 @@ test-support: |
typedef RtemsBarrierReqCreate_Context Context;
- typedef enum {
- PRIO_NORMAL = 1,
- PRIO_LOW
- } Priorities;
-
static void Worker( rtems_task_argument arg )
{
Context *ctx;
@@ -324,12 +307,7 @@ test-target: testsuites/validation/tc-barrier-create.c
test-teardown:
brief: null
code: |
- rtems_status_code sc;
-
- if ( ctx->worker_id != 0 ) {
- sc = rtems_task_delete( ctx->worker_id );
- T_rsc_success( sc );
- }
+ DeleteTask( ctx->worker_id );
description: null
text: ${.:text-template}
transition-map:
diff --git a/spec/rtems/barrier/req/delete.yml b/spec/rtems/barrier/req/delete.yml
index f961d8e1..e8edc639 100644
--- a/spec/rtems/barrier/req/delete.yml
+++ b/spec/rtems/barrier/req/delete.yml
@@ -126,40 +126,20 @@ test-header: null
test-includes:
- rtems.h
- string.h
-test-local-includes: []
+test-local-includes:
+- tc-support.h
test-prepare: |
- rtems_status_code sc;
rtems_task_priority prio;
- prio = 0;
- sc = rtems_task_set_priority( ctx->worker_id, PRIO_HIGH, &prio );
- T_rsc_success( sc );
+ prio = SetPriority( ctx->worker_id, PRIO_HIGH );
T_true( prio == PRIO_LOW || prio == PRIO_HIGH );
test-setup:
brief: null
code: |
- rtems_status_code sc;
- rtems_task_priority prio;
-
memset( ctx, 0, sizeof( *ctx ) );
-
- prio = 0;
- sc = rtems_task_set_priority( RTEMS_SELF, PRIO_NORMAL, &prio );
- T_rsc_success( sc );
- T_eq_u32( prio, PRIO_HIGH );
-
- sc = rtems_task_create(
- rtems_build_name( 'W', 'O', 'R', 'K' ),
- PRIO_LOW,
- RTEMS_MINIMUM_STACK_SIZE,
- RTEMS_DEFAULT_MODES,
- RTEMS_DEFAULT_ATTRIBUTES,
- &ctx->worker_id
- );
- T_assert_rsc_success( sc );
-
- sc = rtems_task_start( ctx->worker_id, Worker, (rtems_task_argument) ctx );
- T_assert_rsc_success( sc );
+ SetSelfPriority( PRIO_NORMAL );
+ ctx->worker_id = CreateTask( "WORK", PRIO_LOW );
+ StartTask( ctx->worker_id, Worker, ctx );
description: null
test-stop: null
test-support: |
@@ -167,12 +147,6 @@ test-support: |
typedef RtemsBarrierReqDelete_Context Context;
- typedef enum {
- PRIO_HIGH = 1,
- PRIO_NORMAL,
- PRIO_LOW
- } Priorities;
-
static void Worker( rtems_task_argument arg )
{
Context *ctx;
@@ -201,9 +175,7 @@ test-support: |
++ctx->wait_done;
- prio = 0;
- sc = rtems_task_set_priority( RTEMS_SELF, PRIO_LOW, &prio );
- T_rsc_success( sc );
+ prio = SetSelfPriority( PRIO_LOW );
T_eq_u32( prio, PRIO_HIGH );
}
}
@@ -211,18 +183,8 @@ test-target: testsuites/validation/tc-barrier-delete.c
test-teardown:
brief: null
code: |
- rtems_status_code sc;
- rtems_task_priority prio;
-
- prio = 0;
- sc = rtems_task_set_priority( RTEMS_SELF, PRIO_HIGH, &prio );
- T_rsc_success( sc );
- T_eq_u32( prio, PRIO_NORMAL );
-
- if ( ctx->worker_id != 0 ) {
- sc = rtems_task_delete( ctx->worker_id );
- T_rsc_success( sc );
- }
+ DeleteTask( ctx->worker_id );
+ RestoreRunnerPriority();
description: null
text: ${.:text-template}
transition-map:
diff --git a/spec/rtems/barrier/req/release.yml b/spec/rtems/barrier/req/release.yml
index 7c04606a..aec50a38 100644
--- a/spec/rtems/barrier/req/release.yml
+++ b/spec/rtems/barrier/req/release.yml
@@ -149,37 +149,18 @@ test-header: null
test-includes:
- rtems.h
- string.h
-test-local-includes: []
+test-local-includes:
+- tc-support.h
test-prepare: null
test-setup:
brief: null
code: |
- rtems_status_code sc;
- rtems_task_priority prio;
+ rtems_status_code sc;
memset( ctx, 0, sizeof( *ctx ) );
-
- prio = 0;
- sc = rtems_task_set_priority( RTEMS_SELF, PRIO_NORMAL, &prio );
- T_rsc_success( sc );
- T_eq_u32( prio, PRIO_HIGH );
-
- sc = rtems_task_create(
- rtems_build_name( 'W', 'O', 'R', 'K' ),
- PRIO_HIGH,
- RTEMS_MINIMUM_STACK_SIZE,
- RTEMS_DEFAULT_MODES,
- RTEMS_DEFAULT_ATTRIBUTES,
- &ctx->worker_id
- );
- T_assert_rsc_success( sc );
-
- sc = rtems_task_start(
- ctx->worker_id,
- Worker,
- (rtems_task_argument) ctx
- );
- T_assert_rsc_success( sc );
+ SetSelfPriority( PRIO_NORMAL );
+ ctx->worker_id = CreateTask( "WORK", PRIO_HIGH );
+ StartTask( ctx->worker_id, Worker, ctx );
sc = rtems_barrier_create(
NAME,
@@ -207,19 +188,6 @@ test-support: |
typedef RtemsBarrierReqRelease_Context Context;
- typedef enum {
- PRIO_HIGH = 1,
- PRIO_NORMAL
- } Priorities;
-
- static void SendEvents( rtems_id id, rtems_event_set events )
- {
- rtems_status_code sc;
-
- sc = rtems_event_send( id, events );
- T_rsc_success( sc );
- }
-
static void Worker( rtems_task_argument arg )
{
Context *ctx;
@@ -227,19 +195,13 @@ test-support: |
ctx = (Context *) arg;
while ( true ) {
- rtems_status_code sc;
- rtems_event_set events;
+ rtems_event_set events;
- events = 0;
- sc = rtems_event_receive(
- RTEMS_ALL_EVENTS,
- RTEMS_EVENT_ANY | RTEMS_WAIT,
- RTEMS_NO_TIMEOUT,
- &events
- );
- T_rsc_success( sc );
+ events = ReceiveAnyEvents();
if ( ( events & EVENT_WAIT ) != 0 ) {
+ rtems_status_code sc;
+
sc = rtems_barrier_wait( ctx->id, RTEMS_NO_TIMEOUT );
T_rsc_success( sc );
}
@@ -249,18 +211,9 @@ test-target: testsuites/validation/tc-barrier-release.c
test-teardown:
brief: null
code: |
- rtems_status_code sc;
- rtems_task_priority prio;
+ rtems_status_code sc;
- prio = 0;
- sc = rtems_task_set_priority( RTEMS_SELF, PRIO_HIGH, &prio );
- T_rsc_success( sc );
- T_eq_u32( prio, PRIO_NORMAL );
-
- if ( ctx->worker_id != 0 ) {
- sc = rtems_task_delete( ctx->worker_id );
- T_rsc_success( sc );
- }
+ DeleteTask( ctx->worker_id );
if ( ctx->manual_release_id != 0 ) {
sc = rtems_barrier_delete( ctx->manual_release_id );
@@ -271,6 +224,8 @@ test-teardown:
sc = rtems_barrier_delete( ctx->auto_release_id );
T_rsc_success( sc );
}
+
+ RestoreRunnerPriority();
description: null
text: ${.:text-template}
transition-map:
diff --git a/spec/rtems/barrier/req/wait.yml b/spec/rtems/barrier/req/wait.yml
index 30827014..40f4be81 100644
--- a/spec/rtems/barrier/req/wait.yml
+++ b/spec/rtems/barrier/req/wait.yml
@@ -157,55 +157,21 @@ test-header: null
test-includes:
- rtems.h
- string.h
-test-local-includes: []
+test-local-includes:
+- tc-support.h
test-prepare: null
test-setup:
brief: null
code: |
- rtems_status_code sc;
- rtems_task_priority prio;
+ rtems_status_code sc;
memset( ctx, 0, sizeof( *ctx ) );
ctx->main_id = rtems_task_self();
-
- prio = 0;
- sc = rtems_task_set_priority( RTEMS_SELF, PRIO_NORMAL, &prio );
- T_rsc_success( sc );
- T_eq_u32( prio, PRIO_HIGH );
-
- sc = rtems_task_create(
- rtems_build_name( 'W', 'O', 'R', 'K' ),
- PRIO_HIGH,
- RTEMS_MINIMUM_STACK_SIZE,
- RTEMS_DEFAULT_MODES,
- RTEMS_DEFAULT_ATTRIBUTES,
- &ctx->high_worker_id
- );
- T_assert_rsc_success( sc );
-
- sc = rtems_task_start(
- ctx->high_worker_id,
- Worker,
- (rtems_task_argument) ctx
- );
- T_assert_rsc_success( sc );
-
- sc = rtems_task_create(
- rtems_build_name( 'W', 'O', 'R', 'K' ),
- PRIO_LOW,
- RTEMS_MINIMUM_STACK_SIZE,
- RTEMS_DEFAULT_MODES,
- RTEMS_DEFAULT_ATTRIBUTES,
- &ctx->low_worker_id
- );
- T_assert_rsc_success( sc );
-
- sc = rtems_task_start(
- ctx->low_worker_id,
- Worker,
- (rtems_task_argument) ctx
- );
- T_assert_rsc_success( sc );
+ SetSelfPriority( PRIO_NORMAL );
+ ctx->high_worker_id = CreateTask( "WRKH", PRIO_HIGH );
+ StartTask( ctx->high_worker_id, Worker, ctx );
+ ctx->low_worker_id = CreateTask( "WRKL", PRIO_LOW );
+ StartTask( ctx->low_worker_id, Worker, ctx );
sc = rtems_barrier_create(
NAME,
@@ -237,20 +203,6 @@ test-support: |
typedef RtemsBarrierReqWait_Context Context;
- typedef enum {
- PRIO_HIGH = 1,
- PRIO_NORMAL,
- PRIO_LOW
- } Priorities;
-
- static void SendEvents( rtems_id id, rtems_event_set events )
- {
- rtems_status_code sc;
-
- sc = rtems_event_send( id, events );
- T_rsc_success( sc );
- }
-
static void Worker( rtems_task_argument arg )
{
Context *ctx;
@@ -261,14 +213,7 @@ test-support: |
rtems_status_code sc;
rtems_event_set events;
- events = 0;
- sc = rtems_event_receive(
- RTEMS_ALL_EVENTS,
- RTEMS_EVENT_ANY | RTEMS_WAIT,
- RTEMS_NO_TIMEOUT,
- &events
- );
- T_rsc_success( sc );
+ events = ReceiveAnyEvents();
if ( ( events & EVENT_CHECK_TIMER ) != 0 ) {
T_eq_int(
@@ -305,9 +250,7 @@ test-support: |
id = &ctx->auto_release_id;
}
- prio = 0;
- sc = rtems_task_set_priority( RTEMS_SELF, PRIO_HIGH, &prio );
- T_rsc_success( sc );
+ prio = SetSelfPriority( PRIO_HIGH );
T_eq_u32( prio, PRIO_LOW );
sc = rtems_barrier_delete( ctx->id );
@@ -316,8 +259,7 @@ test-support: |
sc = rtems_barrier_create( NAME, attribute_set, maximum_waiters, id );
T_rsc_success( sc );
- sc = rtems_task_set_priority( RTEMS_SELF, prio, &prio );
- T_rsc_success( sc );
+ prio = SetSelfPriority( prio );
T_eq_u32( prio, PRIO_HIGH );
}
}
@@ -326,23 +268,10 @@ test-target: testsuites/validation/tc-barrier-wait.c
test-teardown:
brief: null
code: |
- rtems_status_code sc;
- rtems_task_priority prio;
-
- prio = 0;
- sc = rtems_task_set_priority( RTEMS_SELF, PRIO_HIGH, &prio );
- T_rsc_success( sc );
- T_eq_u32( prio, PRIO_NORMAL );
+ rtems_status_code sc;
- if ( ctx->high_worker_id != 0 ) {
- sc = rtems_task_delete( ctx->high_worker_id );
- T_rsc_success( sc );
- }
-
- if ( ctx->low_worker_id != 0 ) {
- sc = rtems_task_delete( ctx->low_worker_id );
- T_rsc_success( sc );
- }
+ DeleteTask( ctx->high_worker_id );
+ DeleteTask( ctx->low_worker_id );
if ( ctx->manual_release_id != 0 ) {
sc = rtems_barrier_delete( ctx->manual_release_id );
@@ -353,6 +282,8 @@ test-teardown:
sc = rtems_barrier_delete( ctx->auto_release_id );
T_rsc_success( sc );
}
+
+ RestoreRunnerPriority();
description: null
text: ${.:text-template}
transition-map:
diff --git a/spec/rtems/event/req/send-receive.yml b/spec/rtems/event/req/send-receive.yml
index 12b5f1d2..30c851df 100644
--- a/spec/rtems/event/req/send-receive.yml
+++ b/spec/rtems/event/req/send-receive.yml
@@ -285,20 +285,16 @@ test-action: |
if ( ctx->sender_type == SENDER_SELF_2 ) {
SendAction( ctx );
} else if ( ctx->sender_type == SENDER_WORKER ) {
- rtems_status_code sc;
rtems_task_priority prio;
Wait( ctx->runner_wakeup );
-
- prio = 0;
- sc = rtems_task_set_priority( ctx->worker_id, PRIO_LOW, &prio );
- T_rsc_success( sc );
+ prio = SetPriority( ctx->worker_id, PRIO_LOW );
T_eq_u32( prio, PRIO_HIGH );
}
test-brief: null
test-cleanup: |
rtems_status_code sc;
- rtems_event_set events;
+ rtems_event_set events;
events = 0;
sc = ( *ctx->receive )(
@@ -321,7 +317,7 @@ test-context:
- brief: |
This member defines the sender task priority.
description: null
- member: Priorities sender_prio
+ member: rtems_task_priority sender_prio
- brief: |
This member defines the receiver ID used for the event send action.
description: null
@@ -405,12 +401,7 @@ test-context:
description: null
member: T_thread_switch_log_4 thread_switch_log
test-context-support: |
- typedef enum {
- PRIO_HIGH = 1,
- PRIO_NORMAL,
- PRIO_LOW,
- PRIO_OTHER
- } Priorities;
+ #define PRIO_OTHER UINT32_MAX
typedef enum {
SENDER_NONE,
@@ -469,6 +460,7 @@ test-header:
test-includes:
- rtems/score/threadimpl.h
test-local-includes:
+- tc-support.h
- tr-event-send-receive.h
test-prepare: |
ctx->events_to_send = 0;
@@ -488,8 +480,7 @@ test-prepare: |
test-setup:
brief: null
code: |
- rtems_status_code sc;
- rtems_task_priority prio;
+ rtems_status_code sc;
memset( ctx, 0, sizeof( *ctx ) );
ctx->runner_thread = _Thread_Get_executing();
@@ -506,48 +497,20 @@ test-setup:
T_ne_u32( ctx->runner_sched, ctx->other_sched );
#endif
- prio = 0;
- sc = rtems_task_set_priority( RTEMS_SELF, PRIO_NORMAL, &prio );
- T_rsc_success( sc );
- T_eq_u32( prio, PRIO_HIGH );
-
- sc = rtems_task_construct( &WorkerConfig, &ctx->worker_id );
- T_assert_rsc_success( sc );
-
- sc = rtems_task_start( ctx->worker_id, Worker, (rtems_task_argument) ctx );
- T_assert_rsc_success( sc );
+ SetSelfPriority( PRIO_NORMAL );
+ ctx->worker_id = CreateTask( "WORK", PRIO_LOW );
+ StartTask( ctx->worker_id, Worker, ctx );
description: null
test-stop: null
test-support: |
#define INPUT_EVENTS ( RTEMS_EVENT_5 | RTEMS_EVENT_23 )
- #define WORKER_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES
-
- #define MAX_TLS_SIZE RTEMS_ALIGN_UP( 64, RTEMS_TASK_STORAGE_ALIGNMENT )
-
typedef RtemsEventReqSendReceive_Context Context;
- RTEMS_ALIGNED( RTEMS_TASK_STORAGE_ALIGNMENT ) static char WorkerStorage[
- RTEMS_TASK_STORAGE_SIZE(
- MAX_TLS_SIZE + RTEMS_MINIMUM_STACK_SIZE,
- WORKER_ATTRIBUTES
- )
- ];
-
- static const rtems_task_config WorkerConfig = {
- .name = rtems_build_name( 'W', 'O', 'R', 'K' ),
- .initial_priority = PRIO_LOW,
- .storage_area = WorkerStorage,
- .storage_size = sizeof( WorkerStorage ),
- .maximum_thread_local_storage_size = MAX_TLS_SIZE,
- .initial_modes = RTEMS_DEFAULT_MODES,
- .attributes = WORKER_ATTRIBUTES
- };
-
static rtems_id CreateWakeupSema( void )
{
rtems_status_code sc;
- rtems_id id;
+ rtems_id id;
sc = rtems_semaphore_create(
rtems_build_name( 'W', 'K', 'U', 'P' ),
@@ -670,9 +633,7 @@ test-support: |
switch ( ctx->sender_prio ) {
case PRIO_NORMAL:
case PRIO_HIGH:
- prio = 0;
- sc = rtems_task_set_priority( RTEMS_SELF, ctx->sender_prio, &prio );
- T_rsc_success( sc );
+ prio = SetSelfPriority( ctx->sender_prio );
T_eq_u32( prio, PRIO_LOW );
break;
case PRIO_OTHER:
@@ -803,21 +764,10 @@ test-target: testsuites/validation/tr-event-send-receive.c
test-teardown:
brief: null
code: |
- rtems_status_code sc;
- rtems_task_priority prio;
-
- prio = 0;
- sc = rtems_task_set_priority( RTEMS_SELF, PRIO_HIGH, &prio );
- T_rsc_success( sc );
- T_eq_u32( prio, PRIO_NORMAL );
-
- if ( ctx->worker_id != 0 ) {
- sc = rtems_task_delete( ctx->worker_id );
- T_rsc_success( sc );
- }
-
+ DeleteTask( ctx->worker_id );
DeleteWakeupSema( ctx->worker_wakeup );
DeleteWakeupSema( ctx->runner_wakeup );
+ RestoreRunnerPriority();
description: null
text: ${.:text-template}
transition-map:
diff --git a/spec/rtems/signal/req/catch.yml b/spec/rtems/signal/req/catch.yml
index ba1d71c4..6d80b9cd 100644
--- a/spec/rtems/signal/req/catch.yml
+++ b/spec/rtems/signal/req/catch.yml
@@ -324,7 +324,8 @@ test-includes:
- rtems.h
- string.h
- rtems/score/smpbarrier.h
-test-local-includes: []
+test-local-includes:
+- tc-support.h
test-prepare: |
rtems_status_code sc;
@@ -349,15 +350,7 @@ test-setup:
rtems_status_code sc;
rtems_id scheduler_id;
- sc = rtems_task_create(
- rtems_build_name( 'W', 'O', 'R', 'K' ),
- 1,
- RTEMS_MINIMUM_STACK_SIZE,
- RTEMS_DEFAULT_MODES,
- RTEMS_DEFAULT_ATTRIBUTES,
- &ctx->worker_id
- );
- T_assert_rsc_success( sc );
+ ctx->worker_id = CreateTask( "WORK", 1 );
sc = rtems_scheduler_ident_by_processor( 1, &scheduler_id );
T_assert_rsc_success( sc );
@@ -365,12 +358,7 @@ test-setup:
sc = rtems_task_set_scheduler( ctx->worker_id, scheduler_id, 1 );
T_assert_rsc_success( sc );
- sc = rtems_task_start(
- ctx->worker_id,
- Worker,
- (rtems_task_argument) ctx
- );
- T_assert_rsc_success( sc );
+ StartTask( ctx->worker_id, Worker, ctx );
}
description: null
test-stop: null
@@ -452,15 +440,8 @@ test-target: testsuites/validation/tc-signal-catch.c
test-teardown:
brief: null
code: |
- rtems_status_code sc;
-
- if ( ctx->worker_id != 0 ) {
- sc = rtems_task_delete( ctx->worker_id );
- T_rsc_success( sc );
- }
-
- sc = rtems_signal_catch( NULL, RTEMS_DEFAULT_MODES );
- T_rsc_success( sc );
+ DeleteTask( ctx->worker_id );
+ RestoreRunnerASR();
description: null
text: ${.:text-template}
transition-map:
diff --git a/spec/rtems/signal/req/send.yml b/spec/rtems/signal/req/send.yml
index 050c6e8e..6e9d02d5 100644
--- a/spec/rtems/signal/req/send.yml
+++ b/spec/rtems/signal/req/send.yml
@@ -293,7 +293,8 @@ test-description: null
test-header: null
test-includes:
- rtems.h
-test-local-includes: []
+test-local-includes:
+- tc-support.h
test-prepare: |
ctx->handler_calls = 0;
ctx->calls_after_send = 0;
@@ -304,26 +305,13 @@ test-prepare: |
test-setup:
brief: null
code: |
- rtems_status_code sc;
- rtems_task_priority prio;
+ rtems_status_code sc;
memset( ctx, 0, sizeof( *ctx ) );
ctx->runner_id = rtems_task_self();
+ SetSelfPriority( PRIO_NORMAL );
- prio = 0;
- sc = rtems_task_set_priority( RTEMS_SELF, PRIO_NORMAL, &prio );
- T_rsc_success( sc );
- T_eq_u32( prio, PRIO_HIGH );
-
- sc = rtems_task_create(
- rtems_build_name( 'W', 'O', 'R', 'K' ),
- PRIO_HIGH,
- RTEMS_MINIMUM_STACK_SIZE,
- RTEMS_DEFAULT_MODES,
- RTEMS_DEFAULT_ATTRIBUTES,
- &ctx->worker_id
- );
- T_assert_rsc_success( sc );
+ ctx->worker_id = CreateTask( "WORK", PRIO_HIGH );
#if defined(RTEMS_SMP)
if ( rtems_scheduler_get_processor_maximum() > 1 ) {
@@ -337,8 +325,7 @@ test-setup:
}
#endif
- sc = rtems_task_start( ctx->worker_id, Worker, (rtems_task_argument) ctx );
- T_assert_rsc_success( sc );
+ StartTask( ctx->worker_id, Worker, ctx );
description: null
test-stop: null
test-support: |
@@ -354,36 +341,6 @@ test-support: |
typedef RtemsSignalReqSend_Context Context;
- typedef enum {
- PRIO_HIGH = 1,
- PRIO_NORMAL
- } Priorities;
-
- static rtems_event_set Wait( void )
- {
- rtems_status_code sc;
- rtems_event_set events;
-
- events = 0;
- sc = rtems_event_receive(
- RTEMS_ALL_EVENTS,
- RTEMS_EVENT_ANY | RTEMS_WAIT,
- RTEMS_NO_TIMEOUT,
- &events
- );
- T_rsc_success( sc );
-
- return events;
- }
-
- static void SendEvents( rtems_id id, rtems_event_set events )
- {
- rtems_status_code sc;
-
- sc = rtems_event_send( id, events );
- T_rsc_success( sc );
- }
-
static void WorkerDone( const Context *ctx )
{
#if defined(RTEMS_SMP)
@@ -399,7 +356,7 @@ test-support: |
#if defined(RTEMS_SMP)
if ( rtems_scheduler_get_processor_maximum() > 1 ) {
- events = Wait();
+ events = ReceiveAnyEvents();
T_eq_u32( events, EVENT_WORKER_DONE );
}
#endif
@@ -430,12 +387,12 @@ test-support: |
WorkerDone( ctx );
- events = Wait();
+ events = ReceiveAnyEvents();
T_eq_u32( events, EVENT_SEND_DONE );
WorkerDone( ctx );
- events = Wait();
+ events = ReceiveAnyEvents();
T_eq_u32( events, EVENT_DO_ENABLE );
} else {
sc = rtems_signal_catch( ctx->handler, RTEMS_NO_ASR );
@@ -458,7 +415,7 @@ test-support: |
rtems_status_code sc;
rtems_event_set events;
- events = Wait();
+ events = ReceiveAnyEvents();
T_eq_u32( events, EVENT_START );
if ( ctx->nested != 0 ) {
@@ -480,12 +437,12 @@ test-support: |
WorkerDone( ctx );
- events = Wait();
+ events = ReceiveAnyEvents();
T_eq_u32( events, EVENT_SEND_DONE );
WorkerDone( ctx );
- events = Wait();
+ events = ReceiveAnyEvents();
T_eq_u32( events, EVENT_DO_ENABLE );
sc = rtems_task_mode( mode, RTEMS_ASR_MASK, &mode );
@@ -494,7 +451,7 @@ test-support: |
WorkerDone( ctx );
}
- events = Wait();
+ events = ReceiveAnyEvents();
T_eq_u32( events, EVENT_END );
WorkerDone( ctx );
@@ -504,18 +461,8 @@ test-target: testsuites/validation/tc-signal-send.c
test-teardown:
brief: null
code: |
- rtems_status_code sc;
- rtems_task_priority prio;
-
- prio = 0;
- sc = rtems_task_set_priority( RTEMS_SELF, PRIO_HIGH, &prio );
- T_rsc_success( sc );
- T_eq_u32( prio, PRIO_NORMAL );
-
- if ( ctx->worker_id != 0 ) {
- sc = rtems_task_delete( ctx->worker_id );
- T_rsc_success( sc );
- }
+ DeleteTask( ctx->worker_id );
+ RestoreRunnerPriority();
description: null
text: ${.:text-template}
transition-map:
diff --git a/spec/rtems/task/req/mode.yml b/spec/rtems/task/req/mode.yml
index 5fc3bc4e..481dcb2b 100644
--- a/spec/rtems/task/req/mode.yml
+++ b/spec/rtems/task/req/mode.yml
@@ -419,7 +419,7 @@ test-action: |
sc = rtems_task_mode( ctx->current_mode, RTEMS_ALL_MODE_MASKS, &mode );
T_rsc_success( sc );
- SendEvent( ctx, EVENT_MAKE_READY );
+ SendEvents( ctx->worker_id, EVENT_MAKE_READY );
sc = rtems_signal_catch( SignalHandler, ctx->current_mode | RTEMS_NO_ASR );
T_rsc_success( sc );
@@ -532,7 +532,8 @@ test-includes:
- rtems/score/percpu.h
- rtems/score/threaddispatch.h
- rtems/score/watchdogimpl.h
-test-local-includes: []
+test-local-includes:
+- tc-support.h
test-prepare: |
ctx->current_mode = RTEMS_DEFAULT_MODES;
ctx->mode_set = RTEMS_DEFAULT_MODES;
@@ -552,24 +553,9 @@ test-setup:
);
T_rsc_success( sc );
- SetPriority( PRIO_NORMAL );
-
- sc = rtems_task_create(
- rtems_build_name( 'W', 'O', 'R', 'K' ),
- PRIO_HIGH,
- RTEMS_MINIMUM_STACK_SIZE,
- RTEMS_DEFAULT_MODES,
- RTEMS_DEFAULT_ATTRIBUTES,
- &ctx->worker_id
- );
- T_assert_rsc_success( sc );
-
- sc = rtems_task_start(
- ctx->worker_id,
- Worker,
- (rtems_task_argument) ctx
- );
- T_assert_rsc_success( sc );
+ SetSelfPriority( PRIO_NORMAL );
+ ctx->worker_id = CreateTask( "WORK", PRIO_HIGH );
+ StartTask( ctx->worker_id, Worker, ctx );
description: null
test-stop: null
test-support: |
@@ -581,28 +567,6 @@ test-support: |
typedef RtemsTaskReqMode_Context Context;
- typedef enum {
- PRIO_HIGH = 1,
- PRIO_NORMAL
- } Priority;
-
- static void SendEvent( Context *ctx, rtems_event_set event )
- {
- rtems_status_code sc;
-
- sc = rtems_event_send( ctx->worker_id, event );
- T_rsc_success( sc );
- }
-
- static void SetPriority( Priority priority )
- {
- rtems_status_code sc;
- rtems_task_priority previous;
-
- sc = rtems_task_set_priority( RTEMS_SELF, priority, &previous );
- T_rsc_success( sc );
- }
-
static void Worker( rtems_task_argument arg )
{
Context *ctx;
@@ -610,21 +574,13 @@ test-support: |
ctx = (Context *) arg;
while ( true ) {
- rtems_status_code sc;
- rtems_event_set events;
-
- events = 0;
- sc = rtems_event_receive(
- RTEMS_ALL_EVENTS,
- RTEMS_EVENT_ANY | RTEMS_WAIT,
- RTEMS_NO_TIMEOUT,
- &events
- );
- T_rsc_success( sc );
+ rtems_event_set events;
+
+ events = ReceiveAnyEvents();
if ( ( events & EVENT_TIMESLICE ) != 0 ) {
- SetPriority( PRIO_NORMAL );
- SetPriority( PRIO_HIGH );
+ SetSelfPriority( PRIO_NORMAL );
+ SetSelfPriority( PRIO_HIGH );
}
++ctx->worker_counter;
@@ -680,7 +636,7 @@ test-support: |
mode |= set & mask;
counter = ctx->worker_counter;
- SendEvent( ctx, EVENT_MAKE_READY );
+ SendEvents( ctx->worker_id, EVENT_MAKE_READY );
if ( ( mode & RTEMS_PREEMPT_MASK ) == RTEMS_PREEMPT ) {
T_eq_u32( ctx->worker_counter, counter + 1 );
@@ -689,7 +645,7 @@ test-support: |
}
counter = ctx->worker_counter;
- SendEvent( ctx, EVENT_TIMESLICE );
+ SendEvents( ctx->worker_id, EVENT_TIMESLICE );
ExhaustTimeslice();
if ( ( mode & RTEMS_PREEMPT_MASK ) == RTEMS_PREEMPT ) {
@@ -718,21 +674,9 @@ test-target: testsuites/validation/tc-task-mode.c
test-teardown:
brief: null
code: |
- rtems_status_code sc;
-
- if ( ctx->worker_id != 0 ) {
- sc = rtems_task_delete( ctx->worker_id );
- T_rsc_success( sc );
- }
-
- sc = rtems_task_mode(
- ctx->runner_mode,
- RTEMS_ALL_MODE_MASKS,
- &ctx->runner_mode
- );
- T_rsc_success( sc );
-
- SetPriority( PRIO_HIGH );
+ DeleteTask( ctx->worker_id );
+ RestoreRunnerMode();
+ RestoreRunnerPriority();
description: null
text: ${.:text-template}
transition-map: