diff options
Diffstat (limited to 'testsuites/validation/tr-model-events-mgr.h')
-rw-r--r-- | testsuites/validation/tr-model-events-mgr.h | 92 |
1 files changed, 88 insertions, 4 deletions
diff --git a/testsuites/validation/tr-model-events-mgr.h b/testsuites/validation/tr-model-events-mgr.h index 94daaa5c79..a15f2ddfa5 100644 --- a/testsuites/validation/tr-model-events-mgr.h +++ b/testsuites/validation/tr-model-events-mgr.h @@ -51,10 +51,93 @@ #include <rtems.h> #include <rtems/score/thread.h> +#include <rtems/test.h> + #ifdef __cplusplus extern "C" { #endif + +/* + * Run Setup/Cleanup structs/functions + */ +typedef struct { + rtems_status_code ( *send )( rtems_id, rtems_event_set ); // copy of the + // corresponding RtemsModelEventsMgr_Run() parameter + rtems_status_code ( *receive ) + ( rtems_event_set, rtems_option + , rtems_interval, rtems_event_set * ); // copy of the + // corresponding RtemsModelEventsMgr_Run() parameter + rtems_event_set ( *get_pending_events )( Thread_Control * ); // copy of the + // corresponding RtemsModelEventsMgr_Run() parameter + unsigned int wait_class; // copy of the corresponding + // RtemsModelEventsMgr_Run() parameter + int waiting_for_event; // copy of the corresponding + // RtemsModelEventsMgr_Run() parameter + int this_test_number; // test number used to identify a test runner instance + rtems_id receiver_id; // receiver ID used for the event send action. + rtems_event_set events_to_send; // events to send for the event send action + rtems_status_code send_status; // status of the event send action. + rtems_option receive_option_set; // option set used for the event receive action + rtems_interval receive_timeout; // timeout used for the event receive action + rtems_event_set received_events; // events received by the event receive action + rtems_status_code receive_status; // status of the event receive action + rtems_event_set unsatisfied_pending; // pending events after an event send action + // which did not satsify the event condition of the receiver + Thread_Control *runner_thread; // TCB of the runner task + rtems_id runner_id; // ID of the runner task + rtems_id worker_id; // task ID of the worker task + rtems_id worker_wakeup; // ID of the semaphore used to wake up the worker task + rtems_id runner_wakeup; // ID of the semaphore used to wake up the runner task + rtems_id runner_sched; // scheduler ID of scheduler used by the runner task + rtems_id other_sched; // scheduler ID of another scheduler + // which is not used by the runner task + T_thread_switch_log_4 thread_switch_log; // thread switch log +} RtemsModelEventsMgr_Context; + +typedef enum { + PRIO_HIGH = 1, + PRIO_NORMAL, + PRIO_LOW, + PRIO_OTHER +} Priorities; + +#define POWER_OF_10 100 + +#define WORKER_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES + +#define MAX_TLS_SIZE RTEMS_ALIGN_UP( 64, RTEMS_TASK_STORAGE_ALIGNMENT ) + +typedef RtemsModelEventsMgr_Context Context; + +rtems_id CreateWakeupSema( void ); + +void DeleteWakeupSema( rtems_id id ); + +void Wait( rtems_id id ); + +void Wakeup( rtems_id id ) ; + +rtems_event_set GetPending( Context *ctx ); + +rtems_option mergeopts( bool wait, bool wantall ); + +rtems_id mapid( Context *ctx, int pid ) ; + +void checkTaskIs( rtems_id expected_id ) ; + +void initialise_pending( rtems_event_set pending[], int max ); + +void initialise_semaphore( Context *ctx, rtems_id semaphore[] ); + +void RtemsModelEventsMgr_Setup_Wrap( void *arg ) ; + +void RtemsModelEventsMgr_Teardown_Wrap( void *arg ) ; + +size_t RtemsModelEventsMgr_Scope( void *arg, char *buf, size_t n ) ; + +void RtemsModelEventsMgr_Cleanup( RtemsModelEventsMgr_Context *ctx ); + /** * @addtogroup RTEMSTestCaseRtemsModelEventsMgr_Run * @@ -74,7 +157,8 @@ extern "C" { * * @param waiting_for_event is the thread waiting for event state. */ -void RtemsModelEventsMgr0_Run( + +void RtemsModelEventsMgr_Run0( rtems_status_code ( *send )( rtems_id, rtems_event_set ), rtems_status_code ( *receive )( rtems_event_set, rtems_option, rtems_interval, rtems_event_set * ), rtems_event_set ( *get_pending_events )( Thread_Control * ), @@ -82,7 +166,7 @@ void RtemsModelEventsMgr0_Run( int waiting_for_event ); -void RtemsModelEventsMgr1_Run( +void RtemsModelEventsMgr_Run1( rtems_status_code ( *send )( rtems_id, rtems_event_set ), rtems_status_code ( *receive )( rtems_event_set, rtems_option, rtems_interval, rtems_event_set * ), rtems_event_set ( *get_pending_events )( Thread_Control * ), @@ -90,7 +174,7 @@ void RtemsModelEventsMgr1_Run( int waiting_for_event ); -void RtemsModelEventsMgr2_Run( +void RtemsModelEventsMgr_Run2( rtems_status_code ( *send )( rtems_id, rtems_event_set ), rtems_status_code ( *receive )( rtems_event_set, rtems_option, rtems_interval, rtems_event_set * ), rtems_event_set ( *get_pending_events )( Thread_Control * ), @@ -98,7 +182,7 @@ void RtemsModelEventsMgr2_Run( int waiting_for_event ); -void RtemsModelEventsMgr3_Run( +void RtemsModelEventsMgr_Run3( rtems_status_code ( *send )( rtems_id, rtems_event_set ), rtems_status_code ( *receive )( rtems_event_set, rtems_option, rtems_interval, rtems_event_set * ), rtems_event_set ( *get_pending_events )( Thread_Control * ), |