From c36622ff5b14dd8f64eb61eb488f7a405f4bbd77 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Sun, 21 Mar 2021 16:04:44 +0100 Subject: spec: Use tc-support.h --- spec/rtems/barrier/req/create.yml | 32 ++--------- spec/rtems/barrier/req/delete.yml | 56 +++---------------- spec/rtems/barrier/req/release.yml | 73 +++++------------------- spec/rtems/barrier/req/wait.yml | 101 ++++++---------------------------- spec/rtems/event/req/send-receive.yml | 76 +++++-------------------- spec/rtems/signal/req/catch.yml | 31 ++--------- spec/rtems/signal/req/send.yml | 83 +++++----------------------- spec/rtems/task/req/mode.yml | 88 ++++++----------------------- 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: -- cgit v1.2.3